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

获取所有进程PID并传入program.exe的PowerShell脚本报错求助

解决PowerShell启动进程时的参数匹配错误问题

你的脚本出错的核心原因是把powershell.exe的参数和Start-Process的参数搞混了:-Command是powershell.exe自身的启动参数,并不是Start-Process的参数,所以PowerShell会提示找不到这个参数。另外,你调用myprogram.exe的语法也不符合Start-Process的要求,下面给你两种正确的实现方案:

方案1:直接启动myprogram.exe并传入PID

如果不需要通过嵌套的PowerShell进程来运行myprogram.exe,直接用下面的脚本即可:

Get-Process | ForEach-Object {
    Start-Process -FilePath "./myprogram.exe" -ArgumentList $_.ID
}

关键说明:

  • -FilePath:指定要启动的可执行文件路径(如果myprogram.exe不在当前工作目录,建议使用绝对路径,比如C:\tools\myprogram.exe)
  • -ArgumentList:用来传递给myprogram.exe的参数,这里直接把每个进程的PID传进去

方案2:通过嵌套PowerShell进程启动(如果有特殊需求)

如果你的场景必须在新的PowerShell进程中执行myprogram.exe,需要把powershell.exe的参数(包括-Command)放到Start-Process的-ArgumentList里:

Get-Process | ForEach-Object {
    Start-Process -FilePath "powershell.exe" -ArgumentList "-Command", "./myprogram.exe $($_.ID)"
}

关键说明:

  • 把-Command作为powershell.exe的参数传入,告诉它要执行后面的命令字符串
  • 使用$($_.ID)来正确展开当前进程的PID变量,确保它能被解析到命令字符串中

额外建议

如果不想把当前运行脚本的PowerShell进程也包含进去,可以添加过滤条件排除自身:

Get-Process | Where-Object {$_.Id -ne $PID} | ForEach-Object {
    Start-Process -FilePath "./myprogram.exe" -ArgumentList $_.ID
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:50:44