2016-03-23 59 views
1

我試圖讓PowerShell語法創建一個AD組名稱列表,然後我可以繼續循環和處理。對於一個命名組的工作代碼爲:通過組名稱的值列表循環處理

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

他們分裂這個AD組分爲8個亞組,所以需要現在決定了

`$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) 

它是一條什麼***each group member of $Groups***我奮力位用。

回答

0

更改此:

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

到這一點:

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

更重要的是,定義$GroupList爲數組馬上(如@Chard建議),所以你不需要分割字符串首先:

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

感謝所有回覆。我現在有代碼工作。 @Ansgar,這正是我正在想的 - 只是把管道的東西直接放在我的腦海中。 爲簡潔起見,未顯示組循環處理。這是更難的部分,因爲他們現在希望爲每個成員行插入作爲列的組名,以便更容易地粘貼到Excel中。等等。 再次感謝所有回覆。 –

0

你需要遍歷你的組數組。

的foreach($在$ GROUPLIST組){

your code here 

}

2

嘗試以下操作:

$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 

我不會用一個字符串來存儲所有你的組名稱,嘗試使用一個字符串數組,然後你將不需要使用split命令。上面的代碼將獲取一組組名,並將它們的memebrs添加到變量$GroupMembers

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

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