Forum Discussion
Identify a running script in Get-Process and script PID
Hello!
1) While running a script with PowerShell 7.4, how to identify it from the output of Get-Process?
I tried to run for example C:\script\example_script.ps1 and, while the script was executing,
Get-Process | Select-String "example"
but this didn't output anything.
I also tried to insert this line in the script:
Write-Host "PID is: $PID"
but this probably prints the PID of the PowerShell process where the script was launched.
2) How to print the script PID?
A script isn't a process. It's uncompiled code that runs inside of an interpreter - a term you won't hear often in this era.
So, there is no concept of a process id for a script, as the process - and therefore the process id - is implicitly that of the interpreter running the script.
It's no different from earlier scripting iterations like those from the Windows Scripting Host (such as JavaScript and VBScript), where in that case, the process id would have been that of the Windows Scripting Host (be that WScript.exe or CScript.exe).
Is there a particular challenge you're trying to solve or are you just curious about the topic?
Cheers,
Lain
1) You can use Get-Process | Where-Object ProcessName -eq 'Example' . Alternatively, you can use Get-Process | Where-Object ProcessName -Match 'Example'' to match everything containing Example.
2) Correct, that shows the PID of the PowerShell process. This will give you the process name and the PID
Get-Process | Where-Object ProcessName -eq 'Example' | Select-object Id, ProcessName
Please click Mark as Best Response & Like if my post helped you to solve your issue.
This will help others to find the correct solution easily. It also closes the item.
If one of the posts was helpful in other ways, please consider giving it a Like.- Paige__TannerBrass ContributorIt was very helpful, thank you so much. But I have still a doubt: is it possible to print the script PID directly from the script code itself? If $PID is not the right variable, is there something else that can be used?
- LainRobertsonSilver Contributor
Assuming this is on Windows, there's a more efficient way to fetch the current process:
$CurrentProcess = [System.Diagnostics.Process]::GetCurrentProcess();
Where you can then use the variable any way you see fit.
It is safe to print process information - be that $pid or anything else - from within the script.
Cheers,
Lain