dan*_*mad 70 windows powershell
PowerShell中的Write-Host和Write-Output有什么区别?
喜欢...
Write-Host "Hello World ";
Write-Output "Hello World";
Run Code Online (Sandbox Code Playgroud)
Sha*_*evy 60
简而言之,Write-Host写入控制台本身.可以把它想象成VBScript中的MsgBox .Write-Output另一方面,写入管道,因此下一个命令可以接受它作为其输入.您不需要使用Write-Output它来编写对象,就像Write-Output为您隐式调用的那样.
PS> Get-Service
Run Code Online (Sandbox Code Playgroud)
会是这样的:
PS> Get-Service | Write-Output
Run Code Online (Sandbox Code Playgroud)
mjo*_*nor 20
写输出将输出发送到管道.从那里它可以通过管道传输到另一个cmdlet或分配给变量.Write-Host将其直接发送到控制台.
$a = 'Testing Write-OutPut' | Write-Output
$b = 'Testing Write-Host' | Write-Host
Get-Variable a,b
Run Code Online (Sandbox Code Playgroud)
输出:
Testing Write-Host
Name Value
---- -----
a Testing Write-OutPut
b
Run Code Online (Sandbox Code Playgroud)
如果你没有告诉Powershell如何处理输出到管道的输出,通过将它分配给变量或将它输送到anoher命令,那么它会被发送到out-default,这通常是控制台,所以最终结果看起来是一样的.
小智 5
Write-Host和Write-Output之间的另一个区别是:
Write-Host在屏幕上显示消息,但不会将其写入日志
Write-Output将消息写入日志,但不会在屏幕上显示。
并且Write-Host被认为是有害的。您可以在“认为写入主机有害”中看到详细说明。
小智 5
Write-Host关于vs 的另一件事是Write-Output:内联字符串连接可能无法按预期工作。
$sampleText = "World"
Write-Host "Hello" $sampleText
Run Code Online (Sandbox Code Playgroud)
回报
Hello World
Run Code Online (Sandbox Code Playgroud)
但
$sampleText = "World"
Write-Output "Hello" $sampleText
Run Code Online (Sandbox Code Playgroud)
回报
Hello
World
Run Code Online (Sandbox Code Playgroud)
这将鼓励Write-Output使用变量(并使用串联)一次保存整个字符串。
$hw = "Hello " + $sampleText
Write-Output $hw
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59343 次 |
| 最近记录: |