Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PowerShell Script

Frage Entwicklung

Mitglied: Iceman75

Iceman75 (Level 1) - Jetzt verbinden

21.04.2008, aktualisiert 28.04.2008, 15532 Aufrufe, 6 Kommentare

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.
Mitglied: 60730
21.04.2008 um 13:00 Uhr
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

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.
Bitte warten ..
Mitglied: Iceman75
21.04.2008 um 13:48 Uhr
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????
Bitte warten ..
Mitglied: Biber
21.04.2008 um 14:12 Uhr
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
Bitte warten ..
Mitglied: Iceman75
21.04.2008 um 14:29 Uhr
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
Bitte warten ..
Mitglied: Iceman75
22.04.2008 um 11:49 Uhr
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:
01.
#User werden aus der benutzer.csv angelegt 
02.
#Anmeldename und Passwort werden generiert 
03.
 
04.
Import-Csv d:\benutzer.csv | ForEach-Object {  
05.
$target = [ADSI]"WinNT://."  
06.
$newuser = $target.Create("user",($_.Vorname).Substring(0,3) + ($_.Nachname).Substring(0,2)) 
07.
$newuser.SetPassword($_.Vorname + "01") 
08.
$newuser.SetInfo() 
09.
$newuser.description = (($_.Name) + " - " + ($_.Abteilung))  
10.
$newuser.psbase.InvokeSet('AccountDisabled', $FALSE)  
11.
$newuser.SetInfo()  
12.
 
13.
#Ausgabe Fehler in errorfile.txt 
14.
 
15.
$Error | Out-File d:\errorfile.txt -append 
16.
 
17.
}  
18.
 
19.
#Benutzer werden Mitglied der Gruppen die in der benutzer.csv festgelegt sind 
20.
 
21.
Import-Csv d:\benutzer.csv | ForEach-Object {  
22.
$user = "WinNT://PC007/" + (($_.Vorname).Substring(0,3) + ($_.Nachname).Substring(0,2)) 
23.
$group =[ADSI]"WinNT://./???????????" 
24.
$group.Add($user) 
25.
 
26.
#Ausgabe Fehler in errorfile.txt 
27.
 
28.
$Error | Out-File d:\logfile.txt -Append 
29.
 
30.
} 
Bitte warten ..
Mitglied: Iceman75
28.04.2008 um 08:45 Uhr
Keiner eine Idee dazu?????

mfg

ice
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

VB for Applications
Powershell Script aus VBA heraus ausführen (2)

Frage von mcnico1978 zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell-Script als Admin über CMD ausführen (2)

Frage von Tobiased zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...