簡體   English   中英

Powershell將數組傳遞給函數錯誤為空

[英]Powershell Passing in Array to Function Error Empty

我使用以下代碼創建了一組自定義對象:

$LOTR = @()
$myObject = new-object PSObject
$myObject | Add-Member -type NoteProperty -name GroupName - Value $city.name
$myObject | Add-Member -type NoteProperty -name GroupType - Value $city.type
$LOTR += $myObject

$LOTR (after iterations):

GroupName      GroupType
----------     ----------
Aragon          Gondor
Arwen           Rivendell

我想將$LOTR傳遞到我編寫的一個函數中,如果存在多個Gondor GroupType ,它將進行比較。 下面是檢查數組是否成功傳遞的函數。

function Comparison {
    param ({[Parameter(Mandatory-=$True)[string[]]$myarray})
    write-host $myarray
}

我的問題是,當我嘗試傳遞$LOTR出現錯誤Cannot bind argument to parameter 'myarray' because it is an empty array

我究竟做錯了什么? 我嘗試使用強制該函數接受空數組,並且它為空。 但是在powershell命令行上打印$LOTR返回我輸入的所有值。 我不確定我要去哪里。

如果我對您的語法進行一些更改,則您的代碼有效( 有點

$myObject | Add-Member -type NoteProperty -name GroupName - Value $city.name

應為以下值,並在Value之前刪除空格

$myObject | Add-Member -type NoteProperty -name GroupName -Value $city.name

我更新了函數,使其看起來像這樣。 強制和花括號后刪除連字符。 格式化僅出於可讀性

function Comparison{
    param (
        [Parameter(Mandatory=$True)]
        [string[]]$myarray)
    write-host $myarray
}

至於為什么要強制轉換為我不知道的字符串數組。

我得到以下輸出與您的測試數據

@{GroupName=Aragon; GroupType=Gondor} @{GroupName=Arwen; GroupType=Rivendell}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM