繁体   English   中英

Powershell 将数组元素作为参数传递

[英]Powershell passing element of array as argument

我是 PowerShell 新手,我被困住了 :(。我写了一个我认为的简单脚本,只是将用户列表添加到 AD 组。但不幸的是它不起作用。我在数组中获得了正确的 objectId但是当我尝试将它作为参数传递时,它失败了。无论如何找到前进的方法?我觉得这是一件非常简单的事情,但我尝试了很多不同的事情,并且它说我被卡住了

在代码段下方添加了一些说明

$UsersToAdd = @(
    'user@domain.com',
    'user2@domain.com'
)
$ParentGroup = "DomainGroupX"

ForEach ($User in $UsersToAdd)
{
    $UserId = az ad user list --upn $User --query [].objectId
    $test = $UserId[1]
    If ($UserId.count -le 1) { echo "$User not found" }else {
        az ad group member add --group $ParentGroup --member-id $test
    }
}

问题出在这一行:az ad group member add --group $ParentGroup --member-id $test

这个 $test 项目是一个包含一个 ObjectId 的数组,类似于 [ "sdjasddheiieyieyie"]

但是现在当我尝试通过它时它失败了,而下面的确实有效 az ad group member add --group $ParentGroup --member-id "sdjasddheiieyieyie"

谢谢!!

您正在使 JMESPath 查询比它需要的更复杂:

$UsersToAdd= 'user@domain.com','user2@domain.com'
$ParentGroup = "DomainGroupX"

Foreach ($User in $UsersToAdd) {
    $UserId = az ad user list --upn $User --query [0].objectId
    if ($UserId) { 
        az ad group member add --group $ParentGroup --member-id $UserId
    } else {
        "$User not found"
    }
}

从一开始就索引到 JSON 数组避免了不必要的复杂性。


使用[].objectId将数组结构作为围绕objectId值的字符串返回。 另一个问题是它通过包含您必须考虑的前置空格来格式化您想要的值。

$UsersToAdd= 'user@domain.com','user2@domain.com'
$ParentGroup = "DomainGroupX"

Foreach ($User in $UsersToAdd) {
    $UserId = az ad user list --upn $User --query [].objectId
    $UserId = $UserId[1].Trim()
    if ($UserId) { 
        az ad group member add --group $ParentGroup --member-id $UserId
    } else {
        "$User not found"
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM