Question:
I am trying to accomplish the following via PS and having an issue getting what I need. I have tried many different formats for writing this script and this is the closest I have gotten I think.
I run the following and no error, but no result either.
1 2 3 4 |
$softwarelist = 'chrome|firefox|iexplore|opera' get-process | Where-Object {$_.ProcessName -eq $softwarelist} | stop-process -force |
Here is another example that I was trying, but this one wasn’t terminating all the process I was providing (IE in W8.1).
1 2 3 4 5 |
1..50 | % {notepad;calc} $null = Get-WmiObject win32_process -Filter "name = 'notepad.exe' OR name = 'calc.exe'" | % { $_.Terminate() } |
Thanks for any help!
Answer:
Your $softwarelist
variable looks like a regular expression, but in your Where-Object
condition, you’re using the -eq
operator. I think you want the -match
operator:
1 2 3 4 5 |
$softwarelist = 'chrome|firefox|iexplore|opera' get-process | Where-Object {$_.ProcessName -match $softwarelist} | stop-process -force |
You can also pass multiple processes to
Get-Process
, e.g.
1 2 |
Get-Process -Name 'chrome','firefox','iexplore','opera' | Stop-Process -Force |