0
所以我正在構建一個菜單,並希望將一個數組作爲參考傳遞給一個函數。 當我通過參考一切工作正常。但是當我想傳遞第二個參數時,它將不會與「ParameterBindingArgumentTransformationException」一起使用。我不明白爲什麼。 這裏是 - working-最少的代碼:PowerShell傳遞數組作爲參考
function Menu {
param([Ref]$mi)
write-host "var"
write-host $mi.value[0].cmd
write-host $mi.value[1].desc
write-output 0
}
function MainMenu {
$mm = @( @{desc='Windows Tools';cmd='WinToolsMenue'},
@{desc='copy setup.exe';cmd='setupexe'},
@{desc='gpupdate (Policy)';cmd='cmd /c gpupdate /force'},
@{desc='Exit';cmd='break'})
$a = Menu ([Ref]$mm)
}
& MainMenu
問題代碼:
function Menu {
param([Ref]$mi, $b)
write-host $b
write-host $mi.value[0].cmd
write-host $mi.value[1].desc
write-output 0
}
function MainMenu {
$mm = @( @{desc='Windows Tools';cmd='WinToolsMenue'},
@{desc='copy setup.exe';cmd='setupexe'},
@{desc='gpupdate (Policy)';cmd='cmd /c gpupdate /force'},
@{desc='Exit';cmd='break'})
$mm
$a = Menu ([Ref]$mm, "b")
}
& MainMenu
幾乎嘗試([參考文獻] $英里),$ B或([參考文獻] $ MI,$ b),但它不起作用。有人知道我做錯了什麼?
好吧,明白了。謝謝您的回覆。參考文獻需要評估,逗號是數組分隔符,那是我的錯。請記住這個 – Magomic
@Magomic這不是關於過錯,男人。我只是解釋一下PowerShell的所見所聞。像「foreach」和「param」這樣的語言結構使情況變得更糟。 IMX,大多數人用功能來犯這個錯誤。 –