2016-04-14 9 views
0

サーバーから特定のユーザーアカウントを削除するためのVBScriptを作成しようとしています。 サーバに「adm」および/または「ame」というユーザが見つかった場合、スクリプトはそれらを削除し、削除が成功したかどうかにかかわらず結果を出力する必要があります。サーバーから複数の特定のローカルユーザーアカウントを削除する

以下は、私が書いたスクリプトですが、エラーが発生しています。誰でも私にこれを正すのを助けることができますか?

Dim disuser, objNetwork, strComputer, objComputer 

Set objNetwork = CreateObject("Wscript.Network") 
strComputer = objNetwork.ComputerName 
Set objComputer = GetObject("WinNT://" & strComputer) 
On Error Resume Next 

For Each disuser In "adm ame" 
    Call objComputer.Delete("user", disuser) 
    On Error GoTo 0 
Next 
'On Error res="fail" 
+1

私はあなたを助けることができるかもしれませんが、エラーが何であるか教えていただけませんでした。 –

答えて

2

あなたはこれで結構ですリストとして複数のユーザ名を渡すために、彼らは、他の言葉でArrayまたはCollectionのような列挙をサポートするオブジェクトの列挙可能である必要がFor Eachを使用してそれらを列挙します。

Dim disuser, objNetwork, strComputer, objComputer 

Set objNetwork = CreateObject("Wscript.Network") 
strComputer = objNetwork.ComputerName 
Set objComputer = GetObject("WinNT://" & strComputer) 
On Error Resume Next 

'Split list of space delimited usernames into an Array. 
Dim list: list = Split("adm ame", Chr(32)) 

For Each disuser In list 
    'Clear previous error before checking if the Delete works. 
    Call Err.Clear() 
    Call objComputer.Delete("user", disuser) 
    If Err.Number = 0 Then 
    'Was successful do something 
    Else 
    'Failed do something 
    End If 
Next 
On Error GoTo 0 
'On Error res="fail" 
+1

ユーザ名の静的リストを持っている場合は、直ちに配列として定義する方が簡単です: 'list = Array(" adm "、" ame ")'。文字列を分割するのは通常、リストを別の場所から文字列として受け取るだけです。 –

+0

@AnsgarWiechers私がここで作っていることは、スペースで区切られた文字列をスクリプトに渡しているということですが、コード内で値を定義するだけでは 'Array(" adm "、" ame ")'の方がはるかに意味があります。 – Lankymart

+0

現在、このようなエラーが表示されています。このbczにはそれぞれ配列がありませんか? C:\ Users \ snair \ Desktop \ Test.vbs(12、3)Active Directory:無効なディレクトリパス名が渡されました – SNair

関連する問題