2012-07-31 4 views
2

J'écris une fonction powershell, et je veux qu'elle retourne un seul booléen. Le problème est que PowerShell retourne tout ce qui est dans le pipeline et pas seulement ce qui était explicitement inclus dans l'instruction return.Powershell renvoie plusieurs valeurs

Considérons le code suivant.

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

$answer=getTrue 

Write-host $answer 

La sortie de ce code est

test True 

Cela renvoie un System.Object []. Je veux forcer la valeur de retour à être un System.Boolean.

Ce code fonctionne correctement si j'ajoute un hôte d'écriture.

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

Le seul problème est que je suis en fonction d'une fonction que quelqu'un d'autre est en train d'écrire (je ne peux pas le modifier), et je ne peux pas gaurantee avoir utilisé un Write-Host au lieu de simplement quitter la variable sur la ligne par elle-même.

Y at-il de toute façon forcer la fonction à retourner uniquement la valeur que je veux?

Répondre

5

Il suffit d'utiliser out-null pour supprimer le retour inattendu:

function getTrue(){ $test="test"; $test | out-null; return $true; } 
$answer=getTrue 
Write-Host $answer 

et

function getTrue(){ $test="test"; write-host $test | out-null; return $true; } 
$answer=getTrue 
Write-Host $answer 
+0

Cela fonctionnait très bien, merci. – StaticMethod

Questions connexes