在前一个技能中我们介绍了如何记录脚本结果,以及如何使用括号来同时输出和赋值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| PS> ($a = Get-Process -Id $pid)
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 1595 102 283200 325444 64,56 6436 1 powershell_ise
PS> $a
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 1595 102 283200 325444 64,75 6436 1 powershell_ise
PS>
|
还可以用 -OutVariable
通用参数来实现相同的功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| PS> Get-Process -Id $pid -OutVariable b
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 1731 105 290336 341688 66,66 6436 1 powershell_ise
PS> $b
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 1731 105 290336 341688 66,92 6436 1 powershell_ise
PS>
|
Tee-Object
是第三种方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| PS> Get-Process -Id $pid | Tee-Object -Variable c
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 1759 109 292300 343644 71,53 6436 1 powershell_ise
PS> $c
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 1759 109 292300 343644 71,69 6436 1 powershell_ise
PS>
|
以上方法使用了管道,而管道的速度比较慢。如果希望提升性能,那么避免使用管道:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| PS> Tee-Object -InputObject (Get-Process -Id $pid) -Variable d
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 1761 111 294568 345268 74,31 6436 1 powershell_ise
PS> $d
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 1761 111 294568 345268 74,59 6436 1 powershell_ise
PS>
|