PowerShell에서 Write-Host 와 Write-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에 입력으로 전달되고 있기 때문에)