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