簡體   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