How to search a process by name?
If you're looking for processes such as SearchIndexer - this should be pretty simple to do with PowerShell
Get-Process
will show you a list of running processes. In this case, I have piped it to Select -first 1
because you're interested in the column headers, not a list of the 100+ processes on my PC:
Next up - now you know how to get processes, you need to narrow this down to a specific process. Below, I've shown 4 methods to do this:
Get-Process Search*
will return all processes starting with search
Get-Process SearchIndexer
will return just that one process if it exists
Get-Process | Where {$_.Name -eq "SearchIndexer"}
will find all processes and then only select the one called SearchIndexer
Get-Process | Where {$_.ProcessName -Like "SearchIn*"}
will get all processes and narrow down to ones that start with "SearchIn".
As a side note - you can use wild cards at either end, so `rchInde" will also return the process you want.
Now - to kill the process - pipe it to Stop-Process: ..But it didnt work!
To Stop it - as with some processes - you need to run PowerShell as an Administrator: ..but you still get a prompt!
...ignore the error at the bottom, we've just proven that the process doesn't exist any more
Add the -Force
switch and the prompt goes away!
But we dont like errors when we try to do it over and over: ...so we need to handle it slightly differently. Instead of explicitly stopping that one process, grab all of them, filter it down to the ones we want (if any) and then kill them (if they exist):
last up - add it as a scheduled task action (if you need to) as windows likes to restart certain services/processes and you're all set.
An alternative to Get-Process:
Get-WmiObject Win32_Process | select commandline | Select-String -Pattern "SearchIndexer"