2016-03-23 5 views
1

Durchlaufen Ich versuche, die PowerShell-Syntax richtig zu erstellen, um eine Liste der AD-Gruppennamen zu erstellen, die ich dann durchlaufen und verarbeiten kann. Der Arbeitscode für eine benannte Gruppe ist:Durch eine Liste der Werte für Group Names zu Prozess

$Groups = (Get-AdGroup -identity "My_Group_Name" | 
      select name -expandproperty name) 

Sie teilen diese AD-Gruppe in acht Untergruppen, so dass nun Anforderungen vorschreiben, dass

`$Groups` is a list of 8 known groups. So I am aiming for something like: 

$GroupList = "My_Group_Name1,My_Group_Name2,My_Group_Name3,My_Group_Name4"; 
$Groups = $GroupList.split(","); 
$Groups = (Get-AdGroup -identity ***each group member of $Groups*** | 
      select name -expandproperty name) 

Es ist das Bit, das ***each group member of $Groups*** tut Ich kämpfe mit.

Antwort

0

ändern diese:

$Groups = $GroupList.split(","); 
$Groups = (Get-AdGroup -identity ***each group member of $Groups*** | 
      select name -expandproperty name) 

in diese:

$Groups = $GroupList.Split(",") | Get-ADGroupMember | 
      Select-Object -ExpandProperty Name 

Noch besser wäre es, definieren $GroupList als Array direkt (als @Chard vorgeschlagen), so dass Sie nicht brauchen, um eine Zeichenfolge zu spalten an erster Stelle:

$GroupList = 'My_Group_Name1', 'My_Group_Name2', 'My_Group_Name3', 
      'My_Group_Name4' 
$Groups = $GroupList | Get-ADGroupMember | Select-Object -Expand Name 
+0

Danke für die Antworten alle. Ich habe den Code jetzt funktioniert. @Ansgar, das ist genau das, worüber ich nachgedacht habe - nur die Pipeline Sache in meinem Kopf gerade zu bekommen. Die Gruppen-Loop-Verarbeitung wurde der Kürze halber nicht gezeigt. Das war der schwierigere Teil, da sie nun möchten, dass die Gruppennamen als Spalte für jede Mitgliedszeile eingefügt werden, um das Einfügen in Excel einfacher zu machen usw. Es wurde ausgeführt. Nochmals vielen Dank für alle Antworten. –

0

Sie müssen Ihr Array von Gruppen durchlaufen.

foreach ($ Gruppe in $ Gruppenliste) {

your code here 

}

2

Versuchen Sie Folgendes:

$GroupList = "My_Group_Name1","My_Group_Name2","My_Group_Name3","My_Group_Name4" 
$GroupMembers = @() 

$GroupList | ForEach-Object { 
    $GroupMembers += (Get-AdGroup -identity $_ | Get-ADGroupMember | select -expandproperty name) 
} 

$GroupMembers 

Ich würde alle nicht eine Zeichenfolge verwenden zu speichern Versuchen Sie ein Array mit Strings zu verwenden. Dann müssen Sie den Split-Befehl nicht verwenden. Der obige Code nimmt ein Array von Gruppennamen und fügt deren Namen der Variablen $GroupMembers hinzu.

0
$Grouplist = @(
"group1", 
"group2" 
) 

foreach($group in $Grouplist){  
    Get-ADGroupMember -identity $group |select name -expandproperty name 
}