Hi cschra!
Ist etwas komplizierter, aber es geht recht gut mit VB-Script:
Lege zuerst eine Textdatei namens
userliste.txt an.
Dort trägst Du, durch Semikola getrennt, nach folgendem Schema die zu erstellenden User ein:
Benutzername;Passwort;Kommentar;Gruppe
Für jeden Benutzer bitte eine eigene Zeile benutzen!
Beispiel:
Code:
User1;xyz;Hilfsadmin;Administratoren
User2;1234;Normaluser;Benutzer
Danach erstellst Du das eigentliche Script:
Code:
' (C) 2005 by Markus Kafurke, www.marka-it.net
msg = "Kurzbeschreibung:" & vbCr & "Dieses Skript legt automatisiert neue Konten an und liest die dafür nötigen Angaben aus A:\userliste.txt ." & vbCr & vbCr & "Skript jetzt ausführen?"
antwort = MsgBox(msg, vbYesNo + vbQuestion)
if antwort = vbNo then
MsgBox "Abbruch", vbExclamation
WScript.Quit
end if
protokoll = "A:\protokoll.txt"
' Das WScript.Network-Objekt liefert den Namen des Computers,
' der als Vorgabe angeboten wird
'SYS: Windows Script Host Runtime Library
Set net = CreateObject("WScript.Network")
ComputerName = InputBox("Bitte geben Sie den Computernamen ein!",,net.ComputerName)
On Error Resume Next
Set computer = GetObject("WinNT://" & ComputerName & ",computer")
If Err.number = 0 Then
MsgBox "Verbindung hergestellt."
Else
MsgBox "Keine Verbindung zu " & ComputerName
WScript.Quit
End If
On Error Goto 0
dateiname = InputBox("Wo liegen die Kontoinformationen?",,"A:\user.txt")
' Datei öffnen
'SYS: Microsoft (r) Script Runtime
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FileExists(dateiname) Then
MsgBox "Die Datei existiert am angegebenen Ort nicht!"
WScript.Quit
End If
Set infos = fs.OpenTextFile(dateiname)
' Protokolldatei öffnen
Set output = fs.CreateTextFile(protokoll, True)
' Datei zeilenweise bis zum Ende (atEndOfStream) lesen:
Do Until infos.AtEndOfStream
' eine Zeile einlesen
zeile = infos.ReadLine
' Informationen durch Semikola splitten
details = Split(zeile, ";")
' Konto anlegen
Set kontoneu = computer.Create("User", Trim(details(0)))
kontoneu.SetPassword Trim(details(1))
kontoneu.Description = Trim(details(2))
On Error Resume Next
kontoneu.SetInfo
If Err.number = 0 Then
WriteLog details(0) & " angelegt."
AddToGroup Trim(details(3)), kontoneu.ADsPath
Else
WriteLog details(0) & " konnte nicht angelegt werden!"
End If
Err.Clear
On Error Goto 0
Loop
' Dateien schließen
infos.Close
output.Close
' Protokoll anzeigen:
'SYS: Microsoft (r) Script Runtime
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run """" & protokoll & """"
Sub AddToGroup(gruppenname, kontoname)
On Error Resume Next
Set gruppe = GetObject("WinNT://" & ComputerName & "/" & gruppenname & ",group")
gruppe.Add kontoname
gruppe.SetInfo
If Err.number = 0 Then
WriteLog "Konto ist Mitglied in Gruppe " & gruppenname
Else
WriteLog "Konto konnte nicht zum Mitglied in Gruppe " & gruppenname & " gemacht werden."
End If
Err.Clear
End Sub
Sub WriteLog(text)
' eine Zeile ins Protokoll schreiben
output.WriteLine text
End Sub
Diese Datei speicherst Du dann unter "useranlegen.vbs".
Alternativ, um Tipparbeit zu sparen, hänge ich die Datei als *.txt an. Nicht vergessen, diese in useranlegen.vbs umzubenennen...
Ein Doppelklick legt dann alle User wie gewünscht lokal an und speichert die ausgeführten Aktionen unter a:\Protokoll.txt.
Ich nutze dies eigentlich recht häufig in Firmen, die zwar ein Netzwerk, aber kein AD haben. So spare ich mir die ganze Klck- und Tipparbeit!
Beide Dateien auf Diskette oder USB-Stick speichern, und ab geht die Luzie!
Hope, this helps