PowerShell 动态数组
PowerShell Dynamic Arrays
我最近一直在测试我在 Powershell 中学到的新东西,创建动态数组。所以我最初的想法是创建基于 AD 组及其成员的数组,然后使用这些信息做一些事情。然后我问自己 powershell 是否可以通过搜索 AD 为我做这件事。答案是肯定的,我使用下面的代码来做到这一点。
$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 ', ')"
}
我最近一直在测试我在 Powershell 中学到的新东西,创建动态数组。所以我最初的想法是创建基于 AD 组及其成员的数组,然后使用这些信息做一些事情。然后我问自己 powershell 是否可以通过搜索 AD 为我做这件事。答案是肯定的,我使用下面的代码来做到这一点。
$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 ', ')"
}