Powershell杀戮过程 - 我的字符串出了什么问题?

时间:2016-10-02 22:23:51

标签: powershell

我知道工作代码是

Get-Process firefo* | Stop-Process

但我的第一个猜测是

Get-Process | findstr firefox | Stop-Process

它不起作用。

Stop-Process : The input object cannot be bound to any parameters for the command
either because the command does not take pipeline input or the input and its
properties do not match any of the parameters that take pipeline input.
At line:1 char:33
+ Get-Process | findstr firefox | Stop-Process
+                                 ~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (   1379     317...               :PSObject) [Stop-Process], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.StopProcessCommand

我理解字符串

   1342     306  1228412    1279864 -1671 ...71,42  35912 firefox

对于进程终止有害,但为什么呢?

PS C:\Users\adamg> Get-Process firefo*

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
   1342     306  1228412    1279864 -1671 ...71,42  35912 firefox

上述工作正常,即使回复列标题。

1 个答案:

答案 0 :(得分:3)

findstr是一个产生字符串输出的命令行实用程序。 Get-Process输出Process个对象,这是Stop-Process期望输入的内容。它还可以处理进程ID列表,但无法解析findstr中的格式化字符串。

在PowerShell中,您通常不会使用findstr。请改用Where-Object过滤器:

Get-Process | Where-Object { $_.ProcessName -like '*firefox*' } | Stop-Process