Jump to content

Über .csv /.xlsx verschiedene Mitglieder verschiedenen Gruppen hinzufügen


Recommended Posts

Hallo Forum,

 

ich habe folgendes Problem und zwar habe ich eine Excel Liste mit über 100 Gruppen und den jeweils gewünschten Mitgliedern erhalten. (die AD Gruppen habe ich bereits erstellt)

Diese würde ich nun gerne über PowerShell im AD anlegen, mein Skript funktioniert auch soweit, allerdings nur so lange ich nur immer ein Mitglied der Gruppe hinzufüge, sobald mehrere Personen hinzugefügt werden sollen, endet das Skript zwar ohne Fehler ordnungsgemäß, allerdings wird auch kein Mitglied der AD Gruppe hinzugefügt. Leider finde ich hier selbst den Fehler nicht und würde mich freuen, wenn jemand von Euch die passende Lösung für mich hat.

 

Wenn ich die Excel Datei im .csv Format abspeichere, erhalte ich folgendes Format:

Name;upn
Gruppenname01;"user.user01@contoso.com
user.user02@contoso.com
user.user03@contoso.com"

 

Mein PS Skript:

Import-Module ActiveDirectory

$csv = import-csv "irgendeinpfad\Dateiname.csv" -Delimiter ";"
#$csv = Import-Excel "irgendeinpfad\Dateiname.xlsx"

Foreach ($item in $csv)
{
	#Specifying which items in the CSV will be applied to the $upn variable. 
	$upn = $item.upn
	
	#The user name is retrieved by filtering each e-mail address that is listed in the UPN part of the CSV.  
	get-aduser -filter "userprincipalname -eq '$upn'" |
	
	#The user name(s) that have been retrieved are now added to the AD groups found in the CSV.
	% {add-adgroupmember -identity $item.name -members $_}
}

- Ich habe es sowohl über das erhaltene Excel Format versucht, als auch als Trennzeichen-getrenntes .csv versucht.

- " entfernt, damit die Mitglieder nicht als ein einziger Name interpretiert werden

- die Mitgliedernamen hintereinander mit , geschrieben (mit und ohne Anführungszeichen etc.

 

aber bisher hat nichts zum Erfolg geführt. Mir ist klar das eine E-Mail Adresse bzw. in dem Fall der upn nicht für Add-ADGroupMember geeignet ist (aber nur diesen habe ich zur Verfügung), allerdings würde es mich dennoch interessieren warum es mit einem User funktioniert und mit mehr als einen nicht?

 

Es würde mich wirklich sehr freuen, wenn ich nicht nun bei über 100 AD Gruppen "per Hand" die Mitglieder hinzufügen müsste. :-(

 

Für Eure Antworten bedanke ich mich im Voraus!

 

Link to post

Deine CSV-Datei hat ein ungünstiges Format. 

 

Sowas Ähnliches wie das sollte genügen, denke ich:

$csv = import-csv 'irgendeinpfad\Dateiname.csv' -Delimiter ';'

Foreach ($item in $csv) {
    Add-ADGroupMember -Identity $item.name -members  ($Item.upn -split ' ')
}

... natürlich ungetestet ...  ;-) 

Edit: Achso ... das setzt natürlich voraus, dass in deiner CSV-datei die UserPrincipalNames mit Leerzeichen innerhalb des Strings getrennt sind. Wenn es wirklich Zeilenumbrüche sind, musst Du das Zeichen für den -Split anpassen ... oder die CSV-Datei vorher entsprechend aufbereiten.

Edited by BOfH_666
  • Like 1
Link to post

Ich bin bei Olaf - das ist ein ungünstiges Format. Du kannst dem Add-ADGroupMember schon ein Array von Usern mitgeben, die aufgenommen werden sollen. Aber dazu muß es aus Powershell-Sicht auch ein Array sein. Wenn Du UPNs bekommst (und zwar wirklich UPNs und nicht Mailadressen), dann kannst Du die auch direkt in ein Array stecken und übergeben, es wäre nicht nötig, sich die User-Objekte dafür einzeln zu holen.

 

In deinem Code dürfte bei mehr als 1 Member schon Get-ADUser scheitern - dem kann man das so nicht übergeben. Weil es einfach keinen User gibt, dessen UPN so aussieht:

"user.user01@contoso.com user.user02@contoso.com user.user03@contoso.com"

Damit übergibst Du natürlich danach eine leere Memberliste :-)

 

Excel (bzw. Tabellen) gehen als Input für so was schon. Aber da Excel keine "nested tables" hat, brauchst Du als Input eine Tabelle mit genau 1 Gruppe, 1 User pro Zeile. Dann ist es easy.

In Powershell würde man dafür ein PSCustomObject erstellen. Property "Name" wäre der Name der Gruppe, und Property "Members" wäre ein Array (!) der Mitglieder. Und genau dieses Array liefert Dir Import-CSV nicht.

 

HTH, auch wenn's etwas wirr formuliert ist... :grins2:

 

  • Like 1
Link to post

Hallo,

 

vielen Dank für Eure schnellen Antworten zu meinen Problem.

Ihr habt alle 3 zu meiner Lösung beigetragen. 

Kurz zu meiner "Ehrenrettung", ich habe die Liste nicht selbst verbrochen, sondern in diesem Format erhalten. :-)

 

Die Lösung war für mich sowohl -split als auch eine zweite Schleife einzubauen und die Liste mit Notepad++ etwas zeitaufwändig zu bearbeiten.

 

Vielen Dank noch einmal für Eure schnelle Hilfe!

Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...