在所有GUI Powershell脚本中隐藏空控制台窗口?

时间:2012-05-19 09:35:08

标签: winforms powershell

我使用WinForms GUI制作了一个非常简单的Powershell脚本。 一切都按预期工作,但是,当我使用PowerShell运行.ps1脚本时,首先出现一个黑色的空控制台窗口,然后GUI显示。

无论如何要让控制台窗口消失?

祝你好运

5 个答案:

答案 0 :(得分:2)

一年前我写了一篇small article on this subject(法语对不起)。

以下是使用小型VBS脚本启动PowerShell隐藏窗口的常见解决方案(诀窍在最后,0 )。

Set Args = Wscript.Arguments
'MsgBox  "Chemin LDAP: " & Args(0)
'MsgBox  "Classe: " & Args(1)

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nologo -Noninteractive -file c:\SlxRH\RhModif.ps1 " & chr(34) & Args(0) & chr(34) , 0

我还将PowerShell嵌入到一个没有名为slxPShell2.EXE的控制台的可执行文件中。

答案 1 :(得分:0)

我发现以上内容对我不起作用。我用过这个:

Set objShell = CreateObject("WScript.Shell")

objShell.Run "CMD /C START /B " & objShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\WindowsPowerShell\v1.0\powershell.exe -file " & "YourScript.ps1", 0, False

Set objShell = Nothing

希望有所帮助。

答案 2 :(得分:0)

这就是我的工作方式:

  1. 在一个ScriptOne.ps1文件中具有Winforms GUI脚本
  2. 使用以下内容创建另一个LaunchScriptOne.ps1文件:

powershell.exe -WindowStyle Hidden -File "C:\path\to\ScriptOne.ps1"

该解决方案在同一主题的另一个主题中提供:Hide or Minimize the powershell prompt after Winform Launch

我希望有人也能找到一种方法将其放入一个脚本中。上面这个线程中的答案对我没有帮助,但是也许我做错了,idk。

答案 3 :(得分:0)

此解决方案在启动后将Powershell窗口最小化。 Powershell窗口将打开,然后消失,而无需使用任何外部代码。放在脚本的开头。

$t = '[DllImport("user32.dll")] public static extern bool ShowWindow(int handle, int state);'
add-type -name win -member $t -namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0)

答案 4 :(得分:0)

我很无聊,所以没有代表,所以不能在线注释...尽管我很喜欢wrt @Ipse的解决方案,但我还要确保在脚本完成后关闭隐藏的窗口...不是确定PS是否可以解决这种自动垃圾回收的问题,但请怀疑这是最佳的最佳实践。

例如建议您在脚本末尾执行以下操作:

stop-process -Id $ PID

(应该终止该隐藏的窗口v,让它潜伏并占用这些资源)。