PowerShell从函数中获取结果
我有下面的代码,我试图从FooFunc返回字符串Good作为out参数 我该怎么做PowerShell从函数中获取结果,powershell,Powershell,我有下面的代码,我试图从FooFunc返回字符串Good作为out参数 我该怎么做 function FooFunc($a, [ref]$result){ if (4 -gt 1) { $result = "Good" return $true } else { $result = "Bad" return $false } } try { FooFunc "Bar" ([ref]$result)
function FooFunc($a, [ref]$result){
if (4 -gt 1) {
$result = "Good"
return $true
} else {
$result = "Bad"
return $false
}
}
try
{
FooFunc "Bar" ([ref]$result)
Write-Host $result
}
catch
{
Write-Host $_.Exception.Message
}
编辑我不想用return返回答案,我需要它作为ref或out参数
Function Foo{
if(4 -gt 1)
{
return "Good"
}
else
{
return "Bad"
}
}
try{
$result = Foo
Write-Output $result
}
catch{
Write-Output "Some message"
}
[ref]用于将变量传递到函数中,因此它需要存在于您当前的作用域中,这就是您得到错误的原因。我想你误解了这个用法。试试这个:
function FooFunc([ref]$result){
if (4 -gt 1) {
$result = 'good' + $result.value
$result
} else {
$result = "Bad"
return $false
}
}
try
{
$result = 'badval'
FooFunc ([ref]$result)
}
catch
{
Write-Host $_.Exception.Message
}
如果通过管道将函数传递给get member,您将看到它返回ref,并且输出使用的是您传入的变量。应用于参数将导致PSReference对象被传递给函数
对于函数FooFunc$a,[ref]$result,使用$result=Good将函数中的本地$result变量从PSReference更改为字符串,但对调用方传入的变量没有影响。要修改外部变量,您需要设置$result.Value=Good
在调用方,在将变量用作参数之前,还需要声明该变量
函数FooFunc$a,[ref]$result{
如果4-gt 1{
$result.Value='Good'更改参考值,而不是变量
返回$true
}
否则{
$result.Value='Bad'
返回$false
}
}
试一试{
$result=$null在将变量用作引用之前声明变量
FooFunc'Bar'[ref]$result
写入主机$result
}
抓住{
写入主机$\异常.Message
}
另一个选项是从函数中输出多个值:
函数FooFunc$a{
如果4-gt 1{
输出结果和成功值
“很好”
返回$true
}
否则{
此单一返回与上面的输出和返回相同
返回'Bad',$false
}
}
试一试{
$result,$success=foofnc'Bar'接收这两个值
$success隐式输出成功值,如前所述
写入主机$result
}
抓住{
写入主机$\异常.Message
}
我需要返回其他内容,我正在尝试将其作为“ref”或“out”参数返回。如果您提供了实际收到的错误消息,这将有所帮助。