Powershell数组函数

时间:2017-11-23 11:15:35

标签: arrays powershell-v3.0

我在脚本下运行并从模板中检索信息并分配权限。在这里,我想将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
}

这是我的文本输入,它被转换为自定义对象

enter image description here

1 个答案:

答案 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 $_ ...
}