Quelle est la différence entre Write-Host et Write-Output dans PowerShell?
Comme...
Write-Host "Hello World ";
Write-Output "Hello World";
windows
powershell
daniyalahmad
la source
la source
Write-Output envoie la sortie au pipeline. À partir de là, il peut être redirigé vers une autre applet de commande ou affecté à une variable. Write-Host l'envoie directement à la console.
$a = 'Testing Write-OutPut' | Write-Output $b = 'Testing Write-Host' | Write-Host Get-Variable a,b
Les sorties:
Si vous ne dites pas à Powershell quoi faire avec la sortie vers le pipeline en l'attribuant à une variable ou en la redirigeant vers une autre commande, elle est envoyée à out-default, qui est normalement la console, de sorte que le résultat final semble le même .
la source
Write-Output
envoie les données en tant qu'objet via le pipeline. Dans l'exemple Questions, il ne passera qu'une chaîne.write-host
dépend de l'hôte. Dans la consolewrite-host
fait essentiellement[console]::WriteLine
. Voir ceci pour plus d'informations.la source
Write-Ouput
envoie des objets. Cette fois, c'était une chaîne, mais en général, elle enverra des objets, et il est normalement inutile d'utiliser car c'est le moyen par défaut de sortir les résultats / données :)Une autre différence entre Write-Host et Write-Output:
Write-Host affiche le message à l'écran, mais il ne l'écrit pas dans le journal
Write-Output écrit un message dans le journal, mais ne l'affiche pas à l'écran.
Et Write-Host est considéré comme dangereux. Vous pouvez voir une explication détaillée dans l' hôte d'écriture considéré comme nocif .
la source
Write-Output
le message s'affiche à l'écran, si vous exécutez le script par vous-même. Donc je ne suis pas sûr de ce que vous voulez dire avec "Write-Output écrit un message dans le journal, mais il ne l'affiche pas à l'écran." ?Vous pouvez comprendre la différence entre les deux cmds avec l'exemple ci-dessous:
Hôte d'écriture "msgtxt" | Get-Service Lors de l'exécution ci-dessus, vous obtiendrez la sortie en tant que "msgtxt"
Sortie d'écriture "msgtxt" | Get-Service Lors de l'exécution ci-dessus, vous recevrez une erreur car msgtxt n'est le nom d'aucun service. (Dans des conditions idéales) (puisque vous l'écrivez dans un pipeline et qu'il est passé comme entrée à Get-Service)
la source