2012-07-31 4 views
2

Я нахожу функцию powershell, и я хочу, чтобы она возвращала одно логическое значение. Проблема в том, что powershell вернет что-нибудь в конвейер, а не только то, что явно включено в оператор return.Powershell возвращает несколько значений

Рассмотрите следующий код.

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 
} 

Единственная проблема заключается в том, что я в зависимости от функции, что кто-то пишет (я не могу изменить его), и я не могу gaurantee, что они использовали Write-Host, а не просто оставить переменная на линии сама по себе.

Есть ли способ заставить функцию вернуть только то значение, которое я хочу?

ответ

5

Просто используйте 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 
+0

Это работало замечательно, спасибо. – StaticMethod

Смежные вопросы