我导出带有SAM帐户名和MemberOf组的CSV文件。
当我导入相同的CSV文件并尝试使用组的字段时。我会拆分它们。拆分后,我可以在Add-ADPrincipalGroupMemberShip
中使用它们。
elseif ($Answer -eq 'n') {
Write-Warning "Verander de groepen in het CSV bestand: $ExCSV"
Get-ADUser -Identity $ExSam -Properties sAMAccountName, MemberOf |
Select-Object @{Name="User";expression={$ImSam}},
@{Name="Group";expression={$ImGroups}} |
Export-Csv "$ExCSV" -Delimiter "," -Force -NoTypeInformation -Encoding UTF8
[ValidateSet('OK')] $correct = Read-Host "Type 'OK' als je klaar bent"
if ($correct = "OK") {
$csv = Import-Csv "$ExCSV"
foreach ($user in $csv) {
$csv2 = $csv.Group -replace ' ', ', '
}
Write-Output $csv2
Add-ADPrincipalGroupMembership -Identity $ImSam -MemberOf "$csv2"
return
}
}
我写的输出是:
我收到的错误消息:
我的CSV:
答案 0 :(得分:1)
您似乎想将包含名称列表的 string 转换为这些名称的 array 。
-split
operator确实可以实现这一点,它允许使用regular expressions将字符串复杂地拆分为令牌数组。
在最简单的情况下,如果要拆分的字符串(在您的情况下为$csv.Group
始终为'<name1>, <name2>[, ...]'
形式,请使用:
PS> 'test4, test5' -split ', '
test4
test5
要使其更加健壮,可以防止逗号前后出现空格和空格:
PS> ' test4, test5,test6 ' -split ' +|,' -ne ''
test4
test5
test6
具体来说,您需要名称的 array 而不是字符串列表,因为Add-ADPrincipalGroupMembership
的{{1}}参数期望组的 array 身份(名称)。
如上所述,假设您已经修改了-MemberOf
以包含一个数组,请注意,那么您就不必引用$csv2
("..."
)中包含的变量,因为会将值转换回一个(单个)字符串。
因此,请按以下方式进行呼叫:
"$csv2"