2

我正在编写一个 PowerShell 函数,我希望它返回一个布尔值。问题是 PowerShell 将返回管道中的任何内容,而不仅仅是 return 语句中明确包含的内容。

考虑以下代码。

function getTrue(){
  $testVariable = "test"
  $test
  return $true
}

$answer = getTrue

Write-host $answer

这段代码的输出是

test True

这会返回一个System.Object[]. 我想强制返回值为 a System.Boolean

如果我添加Write-Host ,此代码可以正常工作:

function getTrue(){
  $testVariable = "test"
  Write-Host $test
  return $true
}

唯一的问题是我依赖于其他人正在编写的函数(我无法修改它),并且我不能保证他们使用 aWrite-Host而不是仅仅将变量留在行中。

有没有办法强制函数只返回我想要的值?

4

1 回答 1

7

仅用于Out-Null抑制意外返回:

function getTrue(){
    $test = "test";
    $test | Out-Null;
    return $true;
}

$answer = getTrue
Write-Host $answer

function getTrue(){
    $test = "test";
    Write-Host $test | Out-Null;
    return $true;
}

$answer = getTrue
Write-Host $answer
于 2012-07-31T15:31:15.143 回答