Murf 10 Geschrieben 1. Juli 2009 Melden Teilen Geschrieben 1. Juli 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!!! Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 1. Juli 2009 Melden Teilen Geschrieben 1. Juli 2009 Hallo, ungetester Schnellschuss: $split = "$_.Gruppe$i" "+" zum Textverknüpfen habe ich mir mittlerweile abgewöhnt cu blub Zitieren Link zu diesem Kommentar
Murf 10 Geschrieben 1. Juli 2009 Autor Melden Teilen Geschrieben 1. Juli 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! Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 1. Juli 2009 Melden Teilen Geschrieben 1. Juli 2009 (bearbeitet) 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 bearbeitet 1. Juli 2009 von blub Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.