我正在尝试使用[ref]
命名参数。但是,我得到一个错误:
workflow Test
{
Param([Parameter(Mandatory=$true)][String][ref]$someString)
write-verbose $someString -Verbose
$someString = "this is the new string"
}
cls
$someString = "hi"
Test -someString [ref]$someString
write-host $someString
#Error: Cannot process argument transformation on parameter 'someString'. Reference type is expected in argument.
我该如何解决这个问题?
我注意到您在[ref]参数的示例中使用的是“工作流”。为简单起见,我们将其称为“功能”,稍后再返回“工作流程”。
您需要在代码中更改三件事:
()
。这是有效的代码:
function Test
{
Param([Parameter(Mandatory=$true)][ref]$someString)
write-verbose $someString.value -Verbose
$someString.value = "this is the new string"
}
cls
$someString = "hi"
Test -someString ([ref]$someString)
write-host $someString
至于“工作流程”。它们非常受限制,请阅读《PowerShell工作流:限制》。特别是,您不能在工作流中的对象上调用方法。这会中断:
$someString.value = "this is the new string"
由于工作流程的限制,我认为在工作流程中使用[ref]参数不切实际。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句