讀取 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