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,大多数人用功能来犯这个错误。 –