Forum Discussion

Paige__Tanner's avatar
Paige__Tanner
Brass Contributor
Feb 27, 2024

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?

  • LainRobertson's avatar
    LainRobertson
    Feb 28, 2024

    Paige__Tanner 

     

    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

  • Paige__Tanner 

    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__Tanner's avatar
      Paige__Tanner
      Brass Contributor
      It 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?
      • LainRobertson's avatar
        LainRobertson
        Silver Contributor

        Paige__Tanner 

         

        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

Resources