在PowerShell中Write-Host/Output的区别

许多用PowerShell的人一定会发现在PowerShell中有Write-Outup和Write-Host这两个命令,但是很多人都不是很清楚两者的区别。

表明上看这两者都可以输出字符到Console上,但是他们到底有什么不同呢?下面让我们一起测试看看:

Write-Host的测试:

Function Test   
{   
    Write-Host "Result A"   
    "Result B"   
}   
  
  
Test   
Result A   
Result B   
  
  
$a = test   
Result A   
  
$a   
Result B   

当直接运行方法的时候,会得到所有的两个输出,但是write-host是直接输出到控制台的,所以这个值是无法通过变量获得的。

Write-Output的测试:

Function WriteTest($amount, $rate=0.8)   
{  
    $amount * $rate  
}  
Function WriteOutputTest($amount, $rate=0.8)   
{  
    Write-Output $amount * $rate  
}  
  
WriteTest 100  
  
WriteOutputTest 100  
得到的结果是:
80  
  
100  
*  
0.8  
当然两者还有个字不同的参数支持,比如Write-Host支持NewLine等参数,实际上两者的区别是Write-Host只是仅仅将字符串输出到屏幕,而Write-Output则是可以把对象传递输出,再来看看如下一个简单的例子对比便知:
PS C:\Users> $process = get-process  
PS C:\Users> Write-Host $process  
System.Diagnostics.Process (AcroRd32) System.Diagnostics.Process (AcroRd32) System.Dia  
.Diagnostics.Process (AdobeARM) System.Diagnostics.Process (AlipaySecSvc) System.Diagn  
gnostics.Process (atieclxx) System.Diagnostics.Process (atiesrxx) System.Diagnostics.P  
s.Process (CcmExec) System.Diagnostics.Process (CISVC) System.Diagnostics.Process (com  
ess (conhost) System.Diagnostics.Process (conhost) System.Diagnostics.Process (csrss) 


PS C:\Users> $process = get-process  
PS C:\Users> Write-Output $process  
  
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName  
-------  ------    -----      ----- -----   ------     -- -----------  
    208      16     7776       9024    99     1.48   1416 AcroRd32  
    333      42   151452     113888   362    49.22   5104 AcroRd32  
     68       9     1880        664    70     0.37   5328 acrotray  
    304      19     4400       1476   107     2.96   4512 AdobeARM  
    224      15     3836       5020    59 5,413.81   1800 AlipaySecSvc  
     72       8     1352       1116    43     1.33   1696 armsvc  
    139      10     2204        872    73     0.33   3800 atieclxx  
    121       7     1640       1056    29     1.11    924 atiesrxx  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值