我使用WinForms GUI制作了一个非常简单的Powershell脚本。 一切都按预期工作,但是,当我使用PowerShell运行.ps1脚本时,首先出现一个黑色的空控制台窗口,然后GUI显示。
无论如何要让控制台窗口消失?
祝你好运
答案 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)
这就是我的工作方式:
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,让它潜伏并占用这些资源)。