iceman75
Goto Top

PowerShell Script

Ich möchte lokal User und Gruppen aus einer csv importieren und Anlegen. Mit speziellen Anmeldenamen und der USer soll in Gruppen die in der csv festgelegt sind. Hat das einer schon mal gemacht und kann mir auf die Sprünge helfen??

Das Skript soll folgende Funktionsumfang haben:
•Es soll für alle diese Benutzer ein Account angelegt werden. Jedem neuen Benutzer ist ein eindeutiges Passwort zuzuordnen.

•Die User / Passwort Zuordnung ist für den Helpdesk zu dokumentieren. Sinnvollerweise sollte die Datei in dem Verzeichnis Helpdesk auf dem Fileserver abgelegt werden. Aus dem Dateinamen muß das Anlagedatum und der vollständige Benutzername ersichtlich sein.

•Der Anmeldename setzt sich aus den ersten drei Zeichen des Vornamens und den ersten zwei Zeichen des Nachnamens zusammen, z.B. Max Muster = maxmu. Das Skript muß in der Lage sein den Benutzernamen automatisch aus der user.csv zu generieren.

•Der vollständige Benutzername ist dem Account als Attribut beizufügen. Zusätzlich soll die Abteilung des Benutzers als Beschreibung vorhanden sein.

•Bei der Anlage soll der User bis zu 5 Berechtigungsgruppen zu gewiesen werden, die Gruppen sind in der User.csv angegeben.

•Sollte eine Gruppe noch nicht existieren, so ist diese durch das Skript anzulegen.

•Auf dem Fileserver soll für jeden Benutzer ein Verzeichnis eingerichtet werden, dieses ist für den Netzwerkzugriff freizugeben.
Der Zugriff darf nur für den Administrator und den jeweiligen User möglich sein.

•Erfolg / Fehler sollen für alle durchgeführten Aktionen generiert protokolliert werden.

Content-Key: 85985

Url: https://administrator.de/contentid/85985

Printed on: April 24, 2024 at 18:04 o'clock

Mitglied: 60730
60730 Apr 21, 2008 at 11:00:04 (UTC)
Goto Top
Hi,

Ich möchte lokal User und Gruppen aus
einer csv importieren und Anlegen. Mit
speziellen Anmeldenamen und der USer soll in
Gruppen die in der csv festgelegt sind. Hat
das einer schon mal gemacht und kann mir auf
die Sprünge helfen??


Google mal nach csvde.exe, Powershell dürfte da das falsche Werkzeug sein.

Das Skript soll folgende Funktionsumfang
haben:

Jedem neuen Benutzer ist ein eindeutiges Passwort zuzuordnen.

Das geht leider nicht, außer die Domainpolicy ist so eingestellt, daß der User KEIN Passwort braucht.

Du kannst (per Skript) den User nur anlegen, Variablen setzen und in Gruppen befördern.
Du kannst (per Skript) nur Benutzern - die schon existieren - ein Passwort vergeben /ändern. (ergo - um das Passwort einzurichten, muß vorher der User ohne Passwort angelegt werden -extrem suboptimal - da Domainpolicy somit unsicher)

Ich vermute, das dies kein Bug - sondern ein gewünschtes Sicherheitsplus ist.
Sonst könnte ien "Angreifer" munter skriptgesteuert User incl. funktionierender Passwörter anlegen.
Ich hab mich (in einem früheren Post) diesbezüglich auch schon mal zu weit aus dem Fenster gelehnt.
•Die User / Passwort Zuordnung ist für den Helpdesk zu dokumentieren.

Halte ich für unsicher, denke nicht nur an den Datenschutz, sondern "nur" mal daran, was passiert, wenn der User sein Passwort ändert und damit ist diese Anforderung vom Tisch.

Sinnvollerweise sollte die Datei in dem Verzeichnis Helpdesk auf dem Fileserver
abgelegt werden. Aus dem Dateinamen muß das Anlagedatum und der vollständige
Benutzername ersichtlich sein.

Da Windows das Erstelldatum jeder Datei protokolliert, hat sich das auch gelöst.

•Sollte eine Gruppe noch nicht existieren, so ist diese durch das Skript anzulegen.

Halt ich persönlich nicht sehr sinnvoll, das sktipt legt dann fleissig OUs an und wer kümmert sich später darum, daß die Gruppen auch weiter zugewisen sind.
Was passiert, wenn in der CSV ein Schreibfehler im Feld der Gruppe ist....

•Auf dem Fileserver soll für jeden Benutzer ein Verzeichnis eingerichtet werden, dieses ist für den Netzwerkzugriff freizugeben.

das geht wunderbar mit md \\server\userfreigabe\%username% - du mußt lediglich in "Userfreigabe" den Netzwerkzugriff erlauben und mit Xcacls dem User / Admin in seinem "Home" Rechte geben.

Der Zugriff darf nur für den Administrator und den jeweiligen User möglich sein.
Siehe eine Zeile nach oben.

•Erfolg / Fehler sollen für alle
durchgeführten Aktionen generiert
protokolliert werden.

Protokoll ist gut, testen ist besser face-wink

Ich hab das "andersherum" - also ohne csvde.exe gelöst.
In einem VBS pflege ich die Daten in Masken ein und generiere daraus ein CSV, das ich später (woanders) anlege.
Member: Iceman75
Iceman75 Apr 21, 2008 at 11:48:10 (UTC)
Goto Top
habe auch schon gemerkt das es für lokale user etc. nicht sehr sinnvoll ist mit der PowerShell zu arbeiten. ich soll es aber versuchen. wie gesagt User anlegen kann ich und in Gruppen packen. Wenn ich in meine CSV mehr als nur die namen schreibe bekomme ich fehlermeldungen. Der Anmeldename soll ja auch special sein und die Gruppennamen sollen im csv stehen. Aber wie gesgat klappt das bei mir nicht. Hast du ne Quelle wo man sich einlesen kann, bzw. Vorschlag für gute PowerShell Lektüre????
Member: Biber
Biber Apr 21, 2008 at 12:12:48 (UTC)
Goto Top
Moin TimoBeil,

wenn ich iceman75 in seinem Parallelthread im MSCEBoard hier richtig verstanden habe, will er "nur" lokale User und Gruppen anlegen - PowerShell-Skripte für AD-User hat er schon reichlich angeboten bekommen.

@Iceman75
Willkommen im Forum.

Poste doch mal bitte, wie weit Du bist und/oder zumindest die Felder und Feldnamen, die Du in der CSV-Datei als nötig und sinnvoll erachtest.

Und bitte vielleicht noch einen Tipp, WTF denn jetzt noch fehlt... das import-csv-Cmdlet hast Du bestimmt auch schon gefunden, wenn nicht: beim sympathischen Weltmarktführer höchstselbst.
Ebenso empfehle ich den "PowerShell for Runaways-Part I"-Workskop hier im Forum im Bereich "Batch und Shell".

Ach ja, ein letzter Hinweis - einige hier im Forum sind immer etwas empfindlich, wenn der Fragesteller den Eindruck erweckt, er erwartet eher eine fertig getestete Individuallösung als Hilfestellung bei einigen wenigen hakeligen Skriptzeilen, die er schon "im Prinzip" erstellt hat.

Also versuche lieber solchen Unterstellungen frühzeitig den Wind abzugraben... oder denen das Wasser aus den Segeln zu nehmen...

Grüße
Biber
Member: Iceman75
Iceman75 Apr 21, 2008 at 12:29:25 (UTC)
Goto Top
hi,

also eine komplett lösung möchte ich natürlich nicht.

Also wie gesagt soll die csv die namen, anmeldenamen und gruppen beinhalten. Dies soll dann importiert werden und das script soll dann die User anlegen. also user erstellen und in die gruppen packen habe ich schon hinbekommen. aber die gruppen stehen nicht in der csv.

meine csv:

Name
User1
User2
.
.
.
.

hier was ich soweit habe:

Import-Csv d:\neu1.csv | ForEach-Object {
$target = [ADSI]"WinNT:."
$newuser = $target.Create("user", $_.Name)
$newuser.SetPassword("Password01") <<<soll eigentlich individuell für jeden nutzer sein
$newuser.SetInfo()
$newuser.psbase.InvokeSet('AccountDisabled', $FALSE)
$newuser.SetInfo()

}

Import-Csv D:\Neu1.csv | ForEach-Object {
$user = "WinNT:
pc007/" + $_.Name
$group =[ADSI]"WinNT:./Gruppe1"
$group.Add($user)
$group =[ADSI]"WinNT:
./Gruppe2"
$group.Add($user)
$group =[ADSI]"WinNT:./Gruppe3"
$group.Add($user)
$group =[ADSI]"WinNT:
./Gruppe4"
$group.Add($user)
$group =[ADSI]"WinNT://./Gruppe5"
$group.Add($user)

Gruß

Ice
Member: Iceman75
Iceman75 Apr 22, 2008 at 09:49:06 (UTC)
Goto Top
Also das mit den Usern und deren speziellen Anforderungen habe ich soweit realisiert.

Jetzt suche ich noch einen Weg wie sie in die Gruppen kommen, die in der csv festgelegt sind.

Hier was ich soweit habe:
#User werden aus der benutzer.csv angelegt
#Anmeldename und Passwort werden generiert

Import-Csv d:\benutzer.csv | ForEach-Object { 
$target = [ADSI]"WinNT://."   
$newuser = $target.Create("user",($_.Vorname).Substring(0,3) + ($_.Nachname).Substring(0,2))  
$newuser.SetPassword($_.Vorname + "01")  
$newuser.SetInfo()
$newuser.description = (($_.Name) + " - " + ($_.Abteilung))   
$newuser.psbase.InvokeSet('AccountDisabled', $FALSE)   
$newuser.SetInfo() 

#Ausgabe Fehler in errorfile.txt

$Error | Out-File d:\errorfile.txt -append

} 

#Benutzer werden Mitglied der Gruppen die in der benutzer.csv festgelegt sind

Import-Csv d:\benutzer.csv | ForEach-Object { 
$user = "WinNT://PC007/" + (($_.Vorname).Substring(0,3) + ($_.Nachname).Substring(0,2))  
$group =[ADSI]"WinNT://./???????????"  
$group.Add($user)

#Ausgabe Fehler in errorfile.txt

$Error | Out-File d:\logfile.txt -Append

} 
Member: Iceman75
Iceman75 Apr 28, 2008 at 06:45:20 (UTC)
Goto Top
Keiner eine Idee dazu?????

mfg

ice