循环遍历要处理的组名称的值列表

Cycling through a list of values for Group Names to Process

我正在尝试正确使用 PowerShell 语法来创建一个 AD 组名称列表,然后我可以继续循环处理该列表。 one 命名组的工作代码是:

$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*** 我正在努力解决的问题。

您需要遍历组数组。

foreach ($group in $grouplist) {

  your code here

}

尝试以下操作:

$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

我不会使用一个字符串来存储您所有的组名,请尝试使用一组字符串,这样您就不需要使用拆分命令了。上面的代码将获取一组组名并将它们的成员添加到变量 $GroupMembers.

改变这个:

$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 定义为数组(如 所建议的那样),因此您不需要首先拆分字符串:

$GroupList = 'My_Group_Name1', 'My_Group_Name2', 'My_Group_Name3',
             'My_Group_Name4'
$Groups = $GroupList | Get-ADGroupMember | Select-Object -Expand Name
$Grouplist = @(
"group1",
"group2"
)

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