讀取 CmdLet 輸出
預設情況下,powershell 會將輸出返回給呼叫實體。考慮以下示例,
Get-Process -Name excel
這將簡單地將與名稱 excel 匹配的執行程序返回給呼叫實體。在這種情況下,PowerShell 主機。它列印的東西,像,
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
1037 54 67632 62544 617 5.23 4544 1 EXCEL
現在,如果將輸出分配給變數,它就不會列印任何內容。當然變數保持輸出。 (它是一個字串,物件 - 任何型別的事情)
$allExcel = Get-Process -Name excel
因此,假設你有一個想要通過動態名稱分配變數的方案,你可以使用 -OutVariable
引數
Get-Process -Name excel -OutVariable AllRunningExcel
請注意,這裡缺少’$’。這兩個賦值之間的主要區別在於,它還列印輸出,而不是將其分配給變數 AllRunningExcel。你也可以選擇將其分配給另一個變數。
$VarOne = Get-Process -Name excel -OutVariable VarTwo
儘管如此,上述情況非常罕見,兩個變數$ VarOne 和$ VarTwo 都具有相同的值。
現在考慮一下,
Get-Process -Name EXCEL -OutVariable MSOFFICE
Get-Process -Name WINWORD -OutVariable +MSOFFICE
第一個語句只是獲得 excel 程序並將其分配給 MSOFFICE 變數,接下來將執行 ms 字程序並將其追加到現有的 MSOFFICE 值。看起來像這樣,
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
1047 54 67720 64448 618 5.70 4544 1 EXCEL
1172 70 50052 81780 584 1.83 14968 1 WINWORD