许多用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  



Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐