rmwi 1 Geschrieben 17. Mai 2019 Melden Teilen Geschrieben 17. Mai 2019 Hallo, ich komme einfach nicht weiter. Aufgabe: In einer CVS sind Gruppennamen gelistet. Die Spaltenüberschriften sind benannt mit Gruppe1 und Gruppe2. In jeder Spalte befinden sich ca. 400 Einträge. Nun sollen die Member der Gruppe welche in Spalte "Gruppe1" in Zeile 1 sind in die Gruppe hinzugefügt werden welche in Spalte "Gruppe2" in Zeile 1 eingetragen sind. Soweit so einfach. Leider ist die Schwierigkeit, dass nur die Member aus der Gruppe welche in Spalte "Gruppe1" und Zeile 1 in die Gruppe aus Spalte "Gruppe2" in Zeile 1 eingefügt werden sollen die ein bestimmtes Kriterium erfüllen. Es soll geprüft werden ob die Mailadresse des Gruppenmembers mit einer bestimmten Zeichenfolge beginnt. Dann soll das entsprechende Gruppenmitglied aus der einen Gruppe entfernt werden und der anderen Gruppe hinzugefügt werden. Soweit bin ich bisher: #CSV einlesen $groups=Import-Csv -Delimiter ";" -Path "C:\Scripte\2019\Gruppen\VS_alle_test.csv" #Gruppen bearbeiten foreach ($group in $groups) { $gmember= Get-ADGroupMember $group.Gruppe1 } foreach ($member in $gmember) { $user = Get-Aduser $member Add-ADGroupMember -identity '$groups.Gruppe2' -Member $user.UserPrincipalName = "abc*@Mailadresse" } selbst wenn ich im letzten Teil auf das Filtern nach UserPrincipalname (enthält die Mailadresse = geprüft mit Inhalt $User) verzichte und nur dieses verwende: #CSV einlesen $groups=Import-Csv -Delimiter ";" -Path "C:\Scripte\2019\Gruppen\VS_alle_test.csv" #Gruppen bearbeiten foreach ($group in $groups) { $gmember= Get-ADGroupMember $group.Gruppe1 } foreach ($member in $gmember) { $user = Get-Aduser $member Add-ADGroupMember -identity '$groups.Gruppe2' -Member $user } kommt es zu diesen Fehlern: Zitat Get-ADUser : Es wurde kein Positionsparameter gefunden, der das Argument "CNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" akzeptiert. In Zeile:1 Zeichen:41 + ... ) { $user = Get-Aduser $member Add-ADGroupMember -identity '$groups.e ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.GetADUser Könnt Ihr mir dabei helfen ? Gruß Zitieren Link zu diesem Kommentar
NilsK 2.937 Geschrieben 17. Mai 2019 Melden Teilen Geschrieben 17. Mai 2019 Moin, deine Syntax ist von Grund auf falsch. Du kannst die Cmdlets nicht einfach so hintereinander schreiben. Auch kannst du nicht einfach aus einem Parameter einen Vergleich machen. Und schließlich funktioniert die Mehrfachverschachtelung und der Verweis auf Werte nicht so, wie du dir das denkst. Vielleicht solltest du erst mal einfachere Codebeispiele ausprobieren und damit in der PowerShell laufen lernen. Deine jetzige Anforderung ist schon sehr komplex, da sollte man die Basics draufhaben. Gruß, Nils Zitieren Link zu diesem Kommentar
rmwi 1 Geschrieben 17. Mai 2019 Autor Melden Teilen Geschrieben 17. Mai 2019 Liebe Community, hier die Lösung für oben genannte Aufgabe: #CSV einlesen $AllGroups=Import-Csv -Delimiter ";" -Path "Pfad_zur_Datei\Dateiname.csv" #Variable definieren ForEach ($Group in $AllGroups) { $GroupName = $Group.Gruppe1 $ExternGroup = $Group.Gruppe2 #Gruppenmember auslesen $AllGroupMembers = Get-ADGroupMember $GroupName #Schleife definieren ForEach ($GroupMember in $AllGroupMembers) { #Variable definieren $ADUser = Get-ADUser $GroupMember $ADUserUserPrincipalName = $ADUser.UserPrincipalName $SAMAccountName = $ADUser.SAMAccountName #Bedingung abfragen If ($ADUserUserPrincipalName -like "ABC.*@Maildomäne") { #Definierte Member in neue Gruppe kopieren Add-ADGroupMember -Identity $ExternGroup -Members $SAMAccountName #Definierte Member aus alter Gruppe entfernen Remove-ADGroupMember -Identity $GroupName -Members $SAMAccountName -Confirm:$false } } } Gruß 1 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.