我正在尝试通过PS完成以下操作并且遇到问题得到我需要的东西。我已经尝试了很多不同的格式来编写这个脚本,这是我认为最接近的。
我运行以下内容并且没有错误,但也没有结果。
$softwarelist = 'chrome|firefox|iexplore|opera' get-process | Where-Object {$_.ProcessName -eq $softwarelist} | stop-process -force
这是我尝试的另一个例子,但是这个例子并没有终止我提供的所有过程(W8.1中的IE)。
1..50 | % {notepad;calc} $null = Get-WmiObject win32_process -Filter "name = 'notepad.exe' OR name = 'calc.exe'" | % { $_.Terminate() }
感谢您的帮助!
答案 0 :(得分:9)
您的$softwarelist
变量看起来像正则表达式,但在Where-Object
条件下,您正在使用-eq
运算符。我想你想要-match
运营商:
$softwarelist = 'chrome|firefox|iexplore|opera'
get-process |
Where-Object {$_.ProcessName -match $softwarelist} |
stop-process -force
您还可以将多个流程传递到Get-Process
,例如
Get-Process -Name 'chrome','firefox','iexplore','opera' | Stop-Process -Force
答案 1 :(得分:1)
# First, create an array of strings.
$array = @("chrome","firefox","iexplore","opera")
# Next, loop through each item in your array, and stop the process.
foreach ($process in $array)
{
Stop-Process -Name $process
}