2

PowerShell関数を作成していますが、単一のブール値を返すようにします。問題は、PowerShellが、returnステートメントに明示的に含まれているものだけでなく、パイプライン内のすべてのものを返すことです。

次のコードを検討してください。

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

$answer = getTrue

Write-host $answer

このコードの出力は次のとおりです。

test True

これはを返しますSystem.Object[]。戻り値を強制的に。にしたいSystem.Boolean

Write-Hostを追加すると、このコードは正常に機能します。

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

唯一の問題は、他の誰かが書いている関数に依存していることです(変更できません)。またWrite-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 に答える