我最近一直在测试我在Powershell中学到的一些新东西,创建动态数组。所以我最初的想法是基于AD组及其成员创建数组,然后利用这些信息做一些事情。然后我问自己,从AD的搜索中,powershell是否可以为我做这件事。答案是肯定的,我用下面的代码来做。
$Groups = (Get-ADGroup -Filter {name -Like 'My_Group*'}).name
foreach ($Group in $Groups) {
New-Variable -Name "$($group)" -Value (Get-ADGroupMember -Identity $group -Recursive | Select -ExpandProperty SAMAccountName)
}
这是完美的,因为它在powershell中以AD组的名称作为阵列名称创建阵列,并且阵列项是该组的成员。我现在的问题是,如果我真的不知道组的名称,我该如何引用脚本中创建的组?
我对powershell还相当陌生,所以这可能只是一个愚蠢的想法,但这是我无论如何都想知道的。干杯
使用哈希表代替变量!
哈希表是一个无序的字典,非常适合按名称存储内容:
# Create an empty hashtable
$GroupMembers = @{}
# populate it with the relevant samaccountname values:
foreach($Group in (Get-ADGroup -Filter {Name -like 'My_Group*'}).Name) {
$GroupMembers["$Group"] = Get-ADGroupMember -Identity $Group -Recursive |Select -Expand SAMAccountName
}
现在,您可以通过$GroupMembers.Keys
列表引用所有组名,这样您就可以很容易地再次发现它们:
foreach($GroupName in $GroupMembers.Keys){
"$GroupName contains the members: $($GroupMembers[$GroupName] -join ', ')"
}