Was ist der Unterschied zwischen Write-Host und Write-Output in PowerShell?
Mögen...
Write-Host "Hello World ";
Write-Output "Hello World";
Was ist der Unterschied zwischen Write-Host und Write-Output in PowerShell?
Mögen...
Write-Host "Hello World ";
Write-Output "Hello World";
Antworten:
Kurz gesagt, Write-Hostschreibt auf die Konsole selbst. Stellen Sie es sich als MsgBox in VBScript vor . Write-Outputschreibt andererseits in die Pipeline, sodass der nächste Befehl sie als Eingabe akzeptieren kann. Sie müssen nicht verwenden Write-Output, um Objekte zu schreiben, wie dies Write-Outputimplizit für Sie erforderlich ist.
PS> Get-Service
wäre das gleiche wie:
PS> Get-Service | Write-Output
Write-Output sendet die Ausgabe an die Pipeline. Von dort kann es an ein anderes Cmdlet weitergeleitet oder einer Variablen zugewiesen werden. Write-Host sendet es direkt an die Konsole.
$a = 'Testing Write-OutPut' | Write-Output
$b = 'Testing Write-Host' | Write-Host
Get-Variable a,b
Ausgänge:
Testing Write-Host
Name Value
---- -----
a Testing Write-OutPut
b
Wenn Sie Powershell nicht mitteilen, was mit der Ausgabe an die Pipeline zu tun ist, indem Sie sie einer Variablen zuweisen oder an einen anderen Befehl weiterleiten, wird sie an den Standardwert gesendet, bei dem es sich normalerweise um die Konsole handelt, sodass das Endergebnis gleich aussieht .
Write-Outputsendet die Daten als Objekt durch die Pipeline. Im Beispiel "Fragen" wird nur eine Zeichenfolge übergeben.
write-hostist hostabhängig. In der Konsole write-hostgeht es im Wesentlichen [console]::WriteLine. Sehen Sie diese für weitere Informationen.
Write-Ouputsendet Objekte. Diesmal war es eine Zeichenfolge, aber im Allgemeinen sendet sie Objekte und ist normalerweise nicht erforderlich, da dies die Standardmethode für die Ausgabe von Ergebnissen / Daten ist :)
Ein weiterer Unterschied zwischen Write-Host und Write-Output:
Write-Host zeigt die Nachricht auf dem Bildschirm an, schreibt sie jedoch nicht in das Protokoll
Write-Output schreibt eine Nachricht in das Protokoll, zeigt sie jedoch nicht auf dem Bildschirm an.
Und Write-Host wird als schädlich angesehen. Eine ausführliche Erklärung finden Sie unter Write-Host als schädlich eingestuft .
Write-Outputdie Meldung wird auf dem Bildschirm angezeigt, wenn Sie das Skript selbst ausführen. Ich bin mir also nicht sicher, was Sie mit "Write-Output schreibt eine Nachricht in das Protokoll, aber sie wird nicht auf dem Bildschirm angezeigt" meinen. ?