2016-04-14 5 views
0

Ich versuche, ein VBScript zu schreiben, um bestimmte Benutzerkonto vom Server zu löschen. Wenn im Server die Benutzer "adm" und/oder "ame" gefunden wurden, sollte das Skript diese löschen und auch das Ergebnis ausdrucken, ob die Löschung erfolgreich war oder nicht.löschen mehrere spezifische lokale Benutzerkonten von Servern

Unten ist das Skript, das ich versuchte zu schreiben und ich bekomme einen Fehler. Kann mir jemand helfen, das zu korrigieren?

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

Wir könnten Ihnen vielleicht helfen, aber Sie haben uns nicht gesagt, was der Fehler ist. –

Antwort

2

Wenn Sie dies mehrere Benutzernamen als Liste übergeben wollen, ist in Ordnung, aber sie aufzuzählen ein For Each sie mit anderen Worten ein Objekt enumerable sein müssen, die mit einem Array oder Collection Aufzählung wie unterstützt.

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

Beachten Sie, dass es bei einer statischen Liste von Benutzernamen einfacher ist, sie sofort als Array zu definieren: 'list = Array (" adm "," ame ")'. Das Teilen einer Zeichenfolge ist normalerweise nur sinnvoll, wenn Sie die Liste als Zeichenfolge von woanders abrufen. –

+0

@AnsgarWiechers absolut die Annahme, die ich hier mache, sind sie eine Leerzeichen-getrennte Zeichenfolge in das Skript übergeben, aber wenn nur die Werte im Code definieren dann 'Array (" adm "," ame ")' macht viel mehr Sinn. – Lankymart

+0

momentan bekomme ich einen Fehler wie diesen. Ist diese bcz nicht Array für jedes? C: \ Benutzer \ snair \ Desktop \ Test.vbs (12, 3) Active Directory: Ein ungültiger Verzeichnispfadname wurde übergeben – SNair

Verwandte Themen