[windows] Write-Host와 Write-Output의 PowerShell 차이점은 무엇입니까?

PowerShell에서 Write-HostWrite-Output 의 차이점은 무엇입니까 ?

처럼…

Write-Host "Hello World ";

Write-Output "Hello World";



답변

간단히 말해 Write-Host콘솔 자체에 씁니다. VBScript 의 MsgBox로 생각하십시오 . Write-Output반면에는 파이프 라인에 쓰기 때문에 다음 명령은이를 입력으로 받아 들일 수 있습니다. 암시 적으로 호출 된 Write-Output것처럼 객체를 작성하기 위해 사용할 필요는 없습니다 Write-Output.

PS> Get-Service

다음과 같습니다.

PS> Get-Service | Write-Output


답변

Write-Output은 출력을 파이프 라인으로 보냅니다. 여기에서 다른 cmdlet으로 파이프되거나 변수에 할당 될 수 있습니다. Write-Host는이를 콘솔로 직접 보냅니다.

$a = 'Testing Write-OutPut'  | Write-Output
$b = 'Testing Write-Host' | Write-Host

Get-Variable a,b

출력 :

Testing Write-Host

Name                           Value
----                           -----
a                              Testing Write-OutPut
b

Powershell에 출력을 변수에 할당하거나 anoher 명령에 파이핑하여 파이프 라인에 대한 출력으로 수행 할 작업을 지시하지 않으면 일반적으로 콘솔 인 out-default로 전송되어 최종 결과가 동일하게 표시됩니다. .


답변

Write-Output파이프 라인을 통해 데이터를 객체로 보냅니다. 질문 예제에서는 문자열 만 전달합니다.

write-host호스트에 따라 다릅니다. 콘솔 write-host에서 기본적으로 [console]::WriteLine. 자세한 정보는 이것을 참조하십시오 .


답변

Write-Host와 Write-Output의 또 다른 차이점 :

  • Write-Host는 화면에 메시지를 표시하지만 로그에는 기록하지 않습니다.

  • Write-Output은 로그에 메시지를 기록하지만 화면에는 표시하지 않습니다.

그리고 Write-Host는 유해한 것으로 간주됩니다. Write-Host Thoughmful 에서 자세한 설명을 볼 수 있습니다 .


답변

아래 예제를 통해 두 cmd의 차이점을 이해할 수 있습니다.

쓰기 호스트 “msgtxt”| Get-Service 위에서 실행하면 “msgtxt”로 출력됩니다.

쓰기-출력 “msgtxt”| Get-Service 위를 실행하면 msgtxt가 서비스의 이름이 아니므로 오류가 발생합니다. (이상적인 조건에서) (파이프 라인에 작성 중이고 Get-Service에 입력으로 전달되고 있기 때문에)


답변