答案 0 :(得分:1)
您将需要遍历列标题。您可以使用 Get-Member cmdlet获取这些属性的列表。
$usersToAdd = Import-CSV users.csv
$groups = ($usersToAdd | Get-Member | Where-Object { $_.MemberType -eq "NoteProperty" }).Name
从这里您可以遍历所有组,查询原始csv中每个组下的成员。
foreach ($group in $groups) {
$users = $usersToAdd.$group
foreach ($user in $users) {
Add-ADGroupMember -Identity $group -Members $user -Confirm:$false
}
}
如果某些列具有比其他列更多的用户,则您可能会得到一些空值,因此也许您也要检查一下。
foreach ($group in $groups) {
$users = $usersToAdd.$group
foreach ($user in $users) {
if (![string]::IsNullOrEmpty($user)) {
Add-ADGroupMember -Identity $group -Members $user -Confirm:$false
}
}
}
答案 1 :(得分:0)
谢谢您的回应Ash!我将尽快尝试确认。我在网上发现此脚本效果很好,尽管我仍在分解此脚本以完全理解它。再次感谢您的帮助!::
> $rows = Import-Csv "C:\FILE.csv" > $groups = @{} > foreach ($header in $rows[0].PSObject.Properties.Name) { $groups[$header] = @() } > foreach ($row in $rows) > { > [string[]]$keys = $groups.Keys > foreach ($key in $keys) > { > if ($row.$key) { $groups[$key] += $row.$key } > } > } >foreach ($key in $groups.Keys) { Add-ADGroupMember -Identity $key -Members $groups[$key] -Verbose }