我在脚本下运行并从模板中检索信息并分配权限。在这里,我想将User作为数组输入,我的下面脚本没有将用户作为数组处理。
$userObj = [PSCustomObject]((Get-Content -Raw C:\txt\sample.txt) -replace ':','=' | ConvertFrom-StringData)
[array]$userObj.User
for ($i[0]; $userObj.user; $i++) {
Add-MailboxPermission -Identity $userObj.Identity -User $userObj.User -AccessRights FullAccess -InheritanceType All -confirm:$false
}
这是我的文本输入,它被转换为自定义对象
答案 0 :(得分:0)
$userObj.User
是一个以逗号分隔的名称的字符串。将它转换为数组只会为您提供一个数组,其中包含一个以逗号分隔的名称的字符串,而不是名称数组。
[array]$userObj.User
⇒[ 'auto,auto1' ]
[array]$userObj.User
⇏[ 'auto', 'auto1' ]
要从逗号分隔的字符串中获取名称数组,您需要将其拆分:
$userObj.User -split ','
此外,您的for
循环已损坏。这些循环具有以下结构:
for (loop variable initialization; condition; loop variable incrementation)
e.g。
for ($i=0; $i -lt 10; $i++)
但是你可能在这里不需要for
循环。如果要为分割操作产生的数组的每个元素运行命令,请使用ForEach-Object
代替:
$userObj.User -split ',' | ForEach-Object {
Add-MailboxPermission -Identity $userObj.Identity -User $_ ...
}