Jump to content

Benutzer automatisiert anlegen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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:


User1;xyz;Hilfsadmin;Administratoren
User2;1234;Normaluser;Benutzer

 

Danach erstellst Du das eigentliche Script:

 

' (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

useranlegen.txt

bearbeitet von marka
Link zu diesem Kommentar
  • 8 Jahre später...

Das Thema hier ist zwar  Schon etwas älter, aber vollt kann man mir hier doch etwas helfen.

 

Ich möchte die Pfade der "userliste" so legen das sie immer von dem aktuellen ort ausgeführt wird wo die .vbs datei liegt.

 

Ist das überhaubt möglich ?  Da müsste ich doch nur Zeile 28 anpassen, oder ?

 

dateiname = InputBox("Wo liegen die Kontoinformationen?",,"A:\user.txt")


		
			

			
		
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...