Innanzitutto, le funzioni di PowerShell restituiscono tutte le "copie" non acquisite. È possibile catturare l'uscita assegnando a una variabile e si può ignorare l'uscita reindirizzando a $null
esempio:
$arrayList.Add("hi") > $null
Questo farebbe qualcosa normalmente output come 0 (l'indice dove "hi" è stata aggiunta), ma perché abbiamo reindirizzato a $ null, l'output è ignorato.
Secondo, echo
è solo un alias per "Write-Output" che scrive l'oggetto corrispondente nel flusso di output. return "blah"
è solo una comodità che è equivalente a:
Write-Output "blah"
return
Quindi l'implementazione funzione è equivalente a questo:
function EchoReturnTest(){
Write-Output "afdsfadsf"
Write-Output "blah"
return
}
Se si desidera "vedere" alcune informazioni sulla console host senza che venga considerata parte del "uscita" di una funzione quindi utilizzare Write-Host ad esempio:
function EchoReturnTest(){
Write-Host "afdsfadsf"
return "blah"
}
Inoltre, se si dispone di alcun parametro, allora non ti servono le parentesi alla fine del nome della funzione e. g. function EchoReturnTest { return 'blah' }
.
fonte
2010-01-28 23:49:08
solo un'ipotesi, ma sembra STDOUT (ovvero su quale eco sta stampando) e il valore di ritorno viene scaricato nello stesso flusso. Potresti essere in grado di forzarli a separare dicendo a echo di stampare su STDERR: echo "afdsfadsf" 1> & 2; – mlathe