Jump to content

Bestimmte AD Gruppenmitglieder aus CSV in andere Gruppe verschieben


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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ß

Link zu diesem Kommentar

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

 

 

 

Link zu diesem Kommentar

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ß

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...