Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell从函数中获取结果_Powershell - Fatal编程技术网

PowerShell从函数中获取结果

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)

我有下面的代码,我试图从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)
    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”参数返回。如果您提供了实际收到的错误消息,这将有所帮助。