我有一个CSV文件,其中包含一个列中的多个值。
基本上看起来像:
Name NewName Groups UserA User01 IT Group;GroupB;Doc Users Group;GroupD
我需要知道如何遍历列以从中获取所有组名。
我使用了以下代码,但它不起作用。我认为问题是组名中的单词之间有空格,PowerShell将整个单元格视为一个组名。
foreach ($user in (Import-Csv "$env:USERPROFILE\desktop\info.csv")) {
$oldusername = $user.name
$newusername = $user.NewName
$groups = $user.Groups -split ";"
foreach ($group in $groups) {
Remove-ADGroupMember $group -Members $oldusername -Confirm:$false -Verbose
Add-ADGroupMember $group -Members $newusername -Verbose
}
}
所以我应该得到:
Remove-ADGroupMember IT Group
但我明白了:
Remove-ADGroupMember IT Group GroupB Doc Users Group GroupD
显然不起作用。
答案 0 :(得分:0)
我没有复制/粘贴csv文件,我刚刚向您展示了文件中的值。
正确的csv内容是:
“姓名”,“新名称”,“组”
“UserA”,“User01”,“IT Group; GroupB; Doc Users Group; GroupD”
我想我用循环解决了这个难题。有效的代码是:
foreach ($user in (Import-Csv "$env:USERPROFILE\desktop\info.csv")) {
$oldusername = $user.name
$newusername = $user.NewName
$groups = $user.Groups
foreach ($group in $groups -split ";") {
Remove-ADGroupMember $group -Members $oldusername -Confirm:$false -Verbose
Add-ADGroupMember $group -Members $newusername -Verbose
} }