Ich habe ein wenig Verwirrung über die verschiedenen Möglichkeiten, auf der Konsole zu drucken (Echo). Ich habe gesehen, dass es mehrere Möglichkeiten gibt, Ausgaben auf die Konsole zu schreiben, wie zum Beispiel:
Write-Host "Hello world1"
"Hello World2"
Out-Host -InputObject "Hello World3"
Alle drei Möglichkeiten werden auf der Konsole gedruckt. Die mittlere ist irgendwie einfacher und weniger ausführlich und einfacher zu bedienen. Ich finde das auch, wenn Sie eine Funktion schreiben wie:
function GetValues()
{
"1"
"2"
}
Es werden immer noch zwei Zeichenfolgen in der Pipeline zurückgegeben:
Und ich kann die Werte immer noch ausdrucken:
foreach ($s in GetValues)
{
Write-Host "s: " $s
}
Ich habe festgestellt, dass die Verwendung nur der angegebenen Zeichenfolge nicht immer auf benutzerdefinierten Hosts angezeigt wird und dass ich Write-Host verwenden musste , um Werte zum Drucken auf benutzerdefinierten Hosts zu erhalten.
Irgendwie finde ich das verwirrend. Soll "Print something"
ein Alias sein Write-Host
oder was ist die Absicht?
quelle
Der mittlere schreibt in die Pipeline.
Write-Host
undOut-Host
schreibt an die Konsole. 'echo' ist ein Alias, fürWrite-Output
den auch in die Pipeline geschrieben wird. Der beste Weg, um auf die Konsole zu schreiben, wäre dasWrite-Host
Cmdlet.Wenn ein Objekt in die Pipeline geschrieben wird, kann es von anderen Befehlen in der Kette verwendet werden. Beispielsweise:
Dies funktioniert jedoch nicht, da
Write-Host
in die Konsole und nicht in die Pipeline geschrieben wird (Do-Something erhält den String nicht):quelle