我知道工作代码是
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
上述工作正常,即使回复列标题。
答案 0 :(得分:3)
findstr
是一个产生字符串输出的命令行实用程序。 Get-Process
输出Process
个对象,这是Stop-Process
期望输入的内容。它还可以处理进程ID列表,但无法解析findstr
中的格式化字符串。
在PowerShell中,您通常不会使用findstr
。请改用Where-Object
过滤器:
Get-Process | Where-Object { $_.ProcessName -like '*firefox*' } | Stop-Process