如何在使用 -File 选项时隐藏 PowerShell 窗口

2 投票
3 回答
2715 浏览
提问于 2025-04-15 20:07

我这样调用Powershell:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -noninteractive -nologo -file "C:\Users\dummy\Documents\dev\powershell\samples\test.ps1"

我是在一个Python脚本中调用它的,但如果通过快捷方式调用,也会遇到同样的问题。我原以为-NonInteractive这个参数可以让Powershell在一个隐藏的窗口中运行,但实际上并没有。有没有办法在从外部应用程序调用Powershell时不显示控制台窗口呢?

根据Johannes Rössel的建议的解决方案

import subprocess
st_inf = subprocess.STARTUPINFO()
st_inf.dwFlags = st_inf.dwFlags | subprocess.STARTF_USESHOWWINDOW
subprocess.Popen(["notepad"], startupinfo=st_inf)

3 个回答

0

使用 -WindowStyle Hidden。详细信息可以查看 这里

1

我试过用 -WindowStyle Hidden,但总是会弹出一个控制台窗口,效果不太好。

所以我使用了一个叫 PsRun.exe 的辅助程序,它正好能解决这个问题。你可以在这个链接下载源代码和exe文件:在PowerShell中用WinForm GUI运行计划任务。我用它来处理计划任务。

(注意,-windowstyle 参数只在 V2 版本中可用。)

2

你可以给 CreateProcess 或者 Process.Start 传递合适的参数,这样就可以不显示控制台窗口。

另外,PowerShell 也有一个 -WindowStyle 参数,你可以把它设置为隐藏,这样窗口就不会出现了。

撰写回答