【问题标题】:Powershell Array funnctionPowershell 数组函数
【发布时间】:2017-11-23 11:15:34
【问题描述】:

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

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

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

【问题讨论】:

  • 为什么图片有问题?
  • 即记事本格式,将被读取并转换为自定义ps对象。

标签: arrays powershell-3.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 2015-12-12
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多