我有+100行AD安全组,其中每个集合可能包含3-7个需要添加为成员的安全组。
我已将此数据分解为CSV格式,但到目前为止,我仍无法使用Import-CSV cmdlet来处理数据。
到目前为止,我仅创建了100个条目,如下所示,但是我想看看如何通过导入CSV来解决这个问题。
我在这里阅读了其他CSV问题,并重新阅读了一些Powershell书籍,但到目前为止,没有什么可以找到适当的解决方案。
$DCName = DC01
Add-ADGroupMember -Server $DCName -MainGroup -Members 'Group001', 'Group002', 'Group003'
Add-ADGroupMember -Server $DCName -SecondGroup -Members 'Group011', 'Group022', 'Group033'
Add-ADGroupMember -Server $DCName -ThirdGroup -Members 'Group111', 'Group222'
在CSV内:
MainGroup SecondGroup ThirdGroup
Group001 Group011 Group111
Group002 Group022 Group222
Group003 Group033
-MainGroup
中Add-ADGroupMember
,你需要使用-Identity "MainGroup"
。这不是一个很好的CSV文件。CSV文件中的一行应代表一个项目,每列应为“描述”该项目的属性。您的列值独立于同一行上的其他值。我会这样写:
MembersToAdd.csv
Group,Member
MainGroup,Group001
MainGroup,Group002
SecondGroup,Group011
SecondGroup,Group022
这样,每个任务将有1行,因此很明显应该在何处添加谁。前任。
Import-CSV MembersToAdd.csv | Foreach-Object {
Write-Host "Add $($_.Member) to $($_.Group)"
Add-ADGroupMember -Identity $_.Group -Members $_.Member
#Or you could have added all members to an array, used `Group-Object Group` or
#something else to collect all members an do a single `Add-ADGroupMember` call for that group.
}
但是,要使用当前的CSV,您可以尝试执行以下操作:
$DCName = "DC01"
#Hashtable to store group = members values
$AddMembers = @{}
Import-CSV -Path mygrouplist.csv | ForEach-Object {
#Foreach property (column)
$_.psobject.Properties | ForEach-Object {
#If property has value
if($_.Value) {
#If new "maingroup", create hashtable entry with an array to store values in
if($AddMembers.ContainsKey($_.Name) -eq $false) { $AddMembers.Add($_.Name,@()) }
#Add member to group in hashtable
$AddMembers[$_.Name] += $_.Value
}
}
}
#Foreach entry (group) in hashtable, add members
$AddMembers.GetEnumerator() | ForEach-Object { Add-ADGroupMember -Server $DCName -Identity $_.Name -Members $_.Value }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句