Murf 10 Posted July 1, 2009 Report Posted July 1, 2009 Hallo zusammen, ich möchte ein Script, das aus einer csv-Datei 1. lokale Benutzer anlegt 2. diese Benutzer den Gruppen hinzufügt So, Teil 1 funktioniert soweit. Bei Teil 2 hab ich so meine Probleme... #Gruppenmitgliedschaften pflegen Import-Csv C:\temp\users.csv | ForEach-Object { $user = $strTarget + "/" + $_.Name for ($i=1; $i -le 5; $i++){ $split = $_.Gruppe + $i if ($split){ $gruppe = "WinNT://./"+$split $group =[ADSI]$gruppe $group.Add($user) } } } Die CSV ist in diesem Format: Vorname,Nachname,Name,Abteilung,Gruppe1,Gruppe2,Gruppe3,Gruppe4,Gruppe5 Hans,Meier,hm0815,Abt-1,Administratoren Hans,Müller,hm0816,Abt-2,Benutzer,Remoteunterstützungsanbieter,Remotedesktopbenutzer,Hauptbenutzer Ich weiß, dass $i als Integer angesehen wird und deswegen die Verkettung mit $_.Gruppe um somit die Spalte Gruppe1 oder Gruppe2 anzusprechen nicht funktioniert. Habt ihr Ideen, wie ich es lösen kann? Danke!!! Quote
blub 115 Posted July 1, 2009 Report Posted July 1, 2009 Hallo, ungetester Schnellschuss: $split = "$_.Gruppe$i" "+" zum Textverknüpfen habe ich mir mittlerweile abgewöhnt cu blub Quote
Murf 10 Posted July 1, 2009 Author Report Posted July 1, 2009 Danke, aber leider nicht... in der $split steht dann die ganze zeile, also $_ aber gut, ich habs nun mit einer reorganisation der csv und einem Array hinbekommen: #Gruppenmitgliedschaften pflegen Import-Csv C:\temp\users.csv | ForEach-Object { $user = $strTarget + "/" + $_.Name $gruppen = $_.Gruppe $arr = $gruppen.Split(" ") foreach ($entry in $arr){ $gruppe = "WinNT://./"+$entry $group =[ADSI]$gruppe $group.Add($user) } } Die csv hat nur noch eine Spalte "Gruppe" und die einträge sind durch ein Leerzeichen getrennt. Aber noch was anderes: Gibts ne Befehlsreferenz zu Powershell? Also neben get-help? Ich suche die Parameter etc. zu .create in diesem Fall: #Benutzer anlegen Import-Csv C:\temp\users.csv | ForEach-Object { $target = [ADSI]$strTarget $newuser = $target.Create("user", $_.Name) $newuser.SetPassword($_.Password) $newuser.SetInfo() $newuser.psbase.InvokeSet('AccountDisabled', $false) $newuser.SetInfo() } Also welche Informationen kann ich hier wie bei dem neuen Benutzer hinterlegen? Danke! Quote
blub 115 Posted July 1, 2009 Report Posted July 1, 2009 (edited) Hi, ActiveDirectory wird in der Powershell V1 leider sehr stiefmütterlich behandelt. Erst mit der Powershell V2 und nur in Verbindung mit einem W2kR2-Domaincontroller gibt es deutliche Bewegung Active Directory Powershell Blog : Active Directory Module for Windows PowerShell ? Quick start guide (viel Erfahrung habe ich damit aber auch noch nicht!) Für eine effektive AD-Verwaltung unter PS V1 kann ich dir die Quest-Cmdlets empfehlen PowerShell Commands for Active Directory Quest Software Registrieren kannst du diese cmdlets dauerhaft in deiner profile.ps1 mit Add-Pssnapin quest.activeroles.admanagement die neuen cndlets (z.b. set-qaduser, new-qaduser) findest du danach mit get-help *qad* Diese commandlets haben ihrerseits dann Hilfen dabei, in denen Parameter angegeben sind. Mit native [ADSI] bzw. System.DirectoryServices.DirectoryEntry musst dich durch den Objektkatalog z.b. von VisualStudio2008 wühlen, um an alle Parameter zu gelangen. cu blub Edited July 1, 2009 by blub Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.