Powershell 数组函数

Powershell Array funnction

我在 运行 下面编写脚本并从模板中检索信息并分配权限。在这里我想让用户作为数组输入我的下面的脚本没有将用户作为数组处理。

$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
}

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

$userObj.User 是一个字符串,名称以逗号分隔。将其转换为数组只会为您提供一个包含一个字符串的数组,其中的名称以逗号分隔,而不是名称数组。

[array]$userObj.User[ 'auto,auto1' ]
[array]$userObj.User[ 'auto', 'auto1' ]

要从逗号分隔的字符串中获取姓名数组,您需要将其拆分:

$userObj.User -split ','

此外,您的 for 循环已损坏。这些循环具有以下结构:

for (loop variable initialization; condition; loop variable incrementation)

例如

for ($i=0; $i -lt 10; $i++)

但是您可能在这里不需要 for 循环。如果您想 运行 为拆分操作产生的数组的每个元素执行命令,请改用 ForEach-Object

$userObj.User -split ',' | ForEach-Object {
    Add-MailboxPermission -Identity $userObj.Identity -User $_ ...
}