You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取PowerShell脚本自身的PID?

PowerShell 获取脚本自身PID的方法

首先明确Bash和PowerShell的核心差异:

  • Bash运行脚本时默认会创建子Shell进程,$$返回的是这个子进程的PID,所以每次运行脚本PID都不同。
  • PowerShell默认在当前宿主进程(比如你打开的PowerShell控制台)中执行脚本,$PID返回的是宿主进程的ID,只要宿主进程不关闭,PID就不会变。

以下是两种场景的解决方案:

场景1:获取脚本当前所在进程的PID

如果只是需要脚本运行时的进程ID(不强制每次变化),直接用$PID即可。

示例脚本(保存为test.ps1):

Write-Host "脚本进程PID: $PID"
Write-Output "THIS IS A TEST"

直接在控制台执行.\test.ps1,输出的PID会和控制台进程的PID一致,多次运行PID不变。

场景2:每次运行脚本获取新的PID(模拟Bash的$$)

要实现和Bash一样每次运行脚本都生成新PID,需要让脚本在新的PowerShell进程中执行:

方法1:手动启动新进程执行脚本

在控制台中运行以下命令,脚本会在新进程中执行,每次PID都不同:

powershell.exe -File .\test.ps1

如果使用PowerShell Core(pwsh),则替换为:

pwsh.exe -File .\test.ps1

方法2:脚本自动启动新进程执行

如果想让脚本自己触发新进程运行(无需手动输入额外命令),可以在脚本中加入以下逻辑:

# 检查是否已在子进程中,避免无限递归
if (-not $env:RUN_IN_CHILD) {
    $env:RUN_IN_CHILD = "1"
    # 启动新进程执行当前脚本
    Start-Process powershell.exe -ArgumentList "-File `"$($MyInvocation.MyCommand.Path)`"" -NoNewWindow
    exit
}

# 脚本核心逻辑
Write-Host "脚本进程PID: $PID"
Write-Output "THIS IS A TEST"

运行这个脚本时,会自动启动新的PowerShell进程执行核心代码,每次运行的PID都会变化。

内容的提问来源于stack exchange,提问作者Morph59

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:50:33