Select-String is probably not the hammer you wanna use for this particular nail (see below) :-)

Get-Process has a -Name parameter that takes a wildcard:

Get-Process -Name nginx
# or
Get-Process -Name *nginx*

To kill the process, either call Kill() directly on the object:

$nginxProcess = Get-Process nginx |Select -First 1
$nginxProcess.Kill()

... or simply pipe the process instances to Stop-Process:

Get-Process -Name nginx |Stop-Process

As you can see, we never actually need to locate or pass the process id - the Process object already has that information embedded in it, and the *-Process cmdlets are designed to work in concert - PowerShell is all about command composition, and this is an example of it.

That being said, Stop-Process is also perfectly capable of killing processes by name alone:

Stop-Process -Name nginx

How did I know the *-Process cmdlets had a -Name parameter?

Apart from reading the help files and documentation (I get it, I don't want to read anything either unless I absolutely have to ;-)), a quick way to learn about the parameters exposed by a cmdlet is by running Get-Command <commandName> -Syntax:

PS ~> Get-Command Stop-Process -Syntax

Stop-Process [-Id] <int[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]

Stop-Process -Name <string[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]

Stop-Process [-InputObject] <Process[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]

The output shows us 3 distinct "parameter sets" (combinations of parameter input accepted by the command), and the required and optional arguments we can pass to it.


What's wrong with Select-String?

The Select-String cmdlet is the PowerShell cognate to grep - it takes some input, and performs regular expression matching against it based on whatever pattern you give it.

But grep is only useful when you're operating on strings - and as you've already found, Get-Process returns structured .NET objects, not flat strings.

Instead, the PowerShell-idiomatic approach is to filter the data, using the Where-Object cmdlet:

Get-Process | Where-Object Name -like '*nginx*'

Here, we instruct Where-Object to only let through object that have a Name property, the value of which must satisfy the wildcard pattern *nginx*.

Where-Object also supports arbitrary filter expressions, by accepting a scriptblock - PowerShell will assign the current pipeline object being evaluated to $_ (and $PSItem):

Get-Process | Where-Object { $_.Name -like '*nginx*' }

... which you can extend to whatever degree you need:

# Only let them through if a specific user is executing
Get-Process | Where-Object { $_.Name -like '*nginx*' -and $env:USERNAME -ne 'Quarkly'}
Answer from Mathias R. Jessen on Stack Overflow
🌐
Microsoft Learn
learn.microsoft.com › en-us › powershell › module › microsoft.powershell.management › stop-process
Stop-Process (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn
The Stop-Process cmdlet stops one or more running processes. You can specify a process by process name or process ID (PID), or pass a process object to Stop-Process. Stop-Process works only on processes running on the local computer.
Top answer
1 of 2
8

Select-String is probably not the hammer you wanna use for this particular nail (see below) :-)

Get-Process has a -Name parameter that takes a wildcard:

Get-Process -Name nginx
# or
Get-Process -Name *nginx*

To kill the process, either call Kill() directly on the object:

$nginxProcess = Get-Process nginx |Select -First 1
$nginxProcess.Kill()

... or simply pipe the process instances to Stop-Process:

Get-Process -Name nginx |Stop-Process

As you can see, we never actually need to locate or pass the process id - the Process object already has that information embedded in it, and the *-Process cmdlets are designed to work in concert - PowerShell is all about command composition, and this is an example of it.

That being said, Stop-Process is also perfectly capable of killing processes by name alone:

Stop-Process -Name nginx

How did I know the *-Process cmdlets had a -Name parameter?

Apart from reading the help files and documentation (I get it, I don't want to read anything either unless I absolutely have to ;-)), a quick way to learn about the parameters exposed by a cmdlet is by running Get-Command <commandName> -Syntax:

PS ~> Get-Command Stop-Process -Syntax

Stop-Process [-Id] <int[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]

Stop-Process -Name <string[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]

Stop-Process [-InputObject] <Process[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]

The output shows us 3 distinct "parameter sets" (combinations of parameter input accepted by the command), and the required and optional arguments we can pass to it.


What's wrong with Select-String?

The Select-String cmdlet is the PowerShell cognate to grep - it takes some input, and performs regular expression matching against it based on whatever pattern you give it.

But grep is only useful when you're operating on strings - and as you've already found, Get-Process returns structured .NET objects, not flat strings.

Instead, the PowerShell-idiomatic approach is to filter the data, using the Where-Object cmdlet:

Get-Process | Where-Object Name -like '*nginx*'

Here, we instruct Where-Object to only let through object that have a Name property, the value of which must satisfy the wildcard pattern *nginx*.

Where-Object also supports arbitrary filter expressions, by accepting a scriptblock - PowerShell will assign the current pipeline object being evaluated to $_ (and $PSItem):

Get-Process | Where-Object { $_.Name -like '*nginx*' }

... which you can extend to whatever degree you need:

# Only let them through if a specific user is executing
Get-Process | Where-Object { $_.Name -like '*nginx*' -and $env:USERNAME -ne 'Quarkly'}
2 of 2
1

Note: PowerShell must be run as Administrator in order to execute these commands.

Kill a process with a known PID:

Syntax:

Stop-Process -Force -Id <pid>

Example:

Stop-Process -Force -Id 1234

Kill a process with a known name:

Syntax:

Stop-Process -Force -Name <name>

Example:

Stop-Process -Force -Name Taskmgr

Kill a process with a name wildcard search pattern

Syntax:

Get-Process -Name <pattern> | Stop-Process -Force

Example:

Get-Process -Name *skmg* | Stop-Process -Force
Discussions

windows - How do I kill a process in Powershell - Stack Overflow
Say I'm running a python script that doesn't exit properly. The powershell console does not return control to me without having to close the shell and open a new one. With Bash I can simply press C... More on stackoverflow.com
🌐 stackoverflow.com
Simple command to kill off several instances of the same .exe
Stop-Process -Name "ProcessName" -Force Or without powershell taskkill /IM "process.exe" /F In both of these we include a force method, I honestly like taskkill over PS option here as it has some built in flags that save you some piping. Speficcally /t adding that to taskill kills all the child processes, important but dangerous. More on reddit.com
🌐 r/PowerShell
10
3
January 19, 2021
Kill process of a different user remotely
Hi there, I’m just learning the basics of powershell and I wanted to resolve the following issue: I need to kill a specific task that is run on a remote computer by all users that are not currently logged in. I want to be able to run the command on a Windows 7 machine. What I got so far: Get-WmiObject win32_process ... More on forums.powershell.org
🌐 forums.powershell.org
3
0
August 25, 2016
Powershell kill command issue
I have a command open an excel document but when I run the command to kill excel, UI Path errors out as if the command is not valid. I know it’s right because I enter it in Windows Powershell myself and excel closes. Anyone else have this issue? I’m running a background process that requires ... More on forum.uipath.com
🌐 forum.uipath.com
1
0
January 13, 2022
People also ask

How do I stop a PowerShell command from running?

You can interrupt and stop a PowerShell command while it is running by pressing Control-C. A script can be stopped with the command exit. This will also close the PowerShell console.

🌐
comparitech.com
comparitech.com › home › net admin › tutorial: powershell kill process command
PowerShell Kill Process Command: Step-by-Step Tutorial
How do I kill Windows processes from the command line?

At the command line, you can terminate a Windows process with the command taskkill. To use this command, you need to know its process ID (PID). You can get a list of all running tasks with the command tasklist. Once you know the PID, use the taskkill command in this manner: taskkill /PID /F. Type in the process ID without quotes instead of .

🌐
comparitech.com
comparitech.com › home › net admin › tutorial: powershell kill process command
PowerShell Kill Process Command: Step-by-Step Tutorial
What is the kill PID command?

The kill command is used on Linux to terminate a running process. The format is just kill followed by the process ID. You can get a list of running processes by using the top command. The kill command doesn’t work in Windows – use taskkill instead.

🌐
comparitech.com
comparitech.com › home › net admin › tutorial: powershell kill process command
PowerShell Kill Process Command: Step-by-Step Tutorial
🌐
Comparitech
comparitech.com › home › net admin › tutorial: powershell kill process command
PowerShell Kill Process Command: Step-by-Step Tutorial
November 11, 2024 - You will learn how to open and navigate the PowerShell environment, get a list of running processes, and use commands like 'Taskkill' and 'Stop-Process' to terminate processes by their ID or name. We will also briefly discuss how to kill a process without PowerShell using the Task Manager.
🌐
Dzhavat Ushev
dzhavat.github.io › 2020 › 04 › 09 › powershell-script-to-kill-a-process-on-windows.html
PowerShell script to kill a process on Windows | Dzhavat Ushev
This was something completely new to me so I explored a few different options. One of them was to write a PowerShell script that would look for a specific port and kill the process related to it. That way, I reasoned, I can kill the server after each test. But there was one problem - I had ...
Find elsewhere
🌐
Windows Command Line
windows-commandline.com › powershell-kill-process
How to Kill process from PowerShell
May 15, 2019 - Powershell command ‘Stop-Process’ is used to kill process from command prompt. It can kill a specific process Id or all processes running an application.
🌐
PDQ
pdq.com › blog › what-is-the-powershell-equivalent-of-taskkill
What is the PowerShell equivalent of taskkill? | PDQ
February 12, 2026 - Taskkill has been around forever, but PowerShell gives you a more scriptable, object-based way to stop running applications, especially when you’re automating deployments or cleanup steps. Taskkill terminates running Windows processes by name or process ID, commonly used to close frozen or unresponsive applications.
🌐
Java2Blog
java2blog.com › home › powershell › powershell kill process by name
PowerShell Kill Process by Name [4 Ways] - Java2Blog
June 20, 2023 - In this method, only write the name of the process without extension. For example, do not write "notepad.exe" instead, write "notepad". Use the Terminate() method to kill the process by name in PowerShell.
🌐
PowerShell Forums
forums.powershell.org › powershell help
Kill process of a different user remotely - PowerShell Help - PowerShell Forums
August 25, 2016 - Hi there, I’m just learning the basics of powershell and I wanted to resolve the following issue: I need to kill a specific task that is run on a remote computer by all users that are not currently logged in. I want to be able to run the command on a Windows 7 machine. What I got so far: Get-WmiObject win32_process ...
🌐
Marc Nuri
blog.marcnuri.com › home › windows: how to kill a process from the command line
Windows: How to kill a process from the command line - Marc Nuri
October 31, 2023 - In this post, I've shown you the possible ways to kill a process from the command line in Windows. Using the taskkill command from cmd or the Stop-Process cmdlet from powershell.
🌐
Sacha's Blog
sachabarbs.wordpress.com › 2014 › 10 › 22 › powershell-killing-all-processes-of-name
Powershell : Killing all processes of name | Sacha's Blog
October 22, 2014 - Now I am just starting with PowerShell, so I will likely come up with some ridiculously simple examples. One of thing I really like about PowerShell is the ability to pipe things from one CmdLet to another. Imagine you want to get all instances of the the running process “notepad” and kill them.
🌐
ITPRC
itprc.com › home › network tools
How To Use PowerShell To Kill Processes - Step-by-Step Guide
March 12, 2021 - Soon you’ll see a list of all ... PID on the process that you want to kill and then execute the following command: taskkill /f /PID 00000....
🌐
NinjaOne
ninjaone.com › home › blog › it ops › how to kill a process in windows: 4 methods
How to Kill a Process in Windows | NinjaOne
April 30, 2025 - If you know the name of the process, you can terminate it with the PowerShell Stop-Process by typing Stop-Process -Name “ProcessName” -Force.
🌐
Computer Performance
computerperformance.co.uk › home › powershell
PowerShell Scripting Basics: Kill Process | Stop-Process | Code Examples
January 15, 2019 - We can put this knowledge to use by creating a variable to hold the notepad process object, then applying the .kill() method. # PowerShell Kill Process Clear-Host $process = Get-Process notepad $process.Kill()
🌐
SharePoint Diary
sharepointdiary.com › sharepoint diary › powershell › how to kill a process in powershell with stop-process?
How to Kill a Process in PowerShell with Stop-Process? - SharePoint Diary
October 22, 2025 - Learn how to kill a process with PowerShell Stop-Process cmdlet to effectively manage your Windows process management and troubleshooting.