我用 WinForms GUI 制作了一个非常简单的 Powershell 脚本。一切都按预期工作,但是当我使用 PowerShell 运行 .ps1 脚本时,首先会出现一个黑色的空控制台窗口,然后显示 GUI。
无论如何让控制台窗口消失?
此致
我用 WinForms GUI 制作了一个非常简单的 Powershell 脚本。一切都按预期工作,但是当我使用 PowerShell 运行 .ps1 脚本时,首先会出现一个黑色的空控制台窗口,然后显示 GUI。
无论如何让控制台窗口消失?
此致
一年前我写了一篇关于这个主题的小文章(抱歉是法语)。
这是使用小型 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的没有控制台的可执行文件中。
我发现上面的方法对我不起作用。我用这个:
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
希望有帮助。
此解决方案在启动后最小化 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)
这就是我得到这个工作的方式:
powershell.exe -WindowStyle Hidden -File "C:\path\to\ScriptOne.ps1"
.
该解决方案在同一主题的另一个线程中提供:在 Winform Launch 后隐藏或最小化 powershell 提示
我希望有人也能找到一种方法将其放入一个脚本中。这个帖子上面的答案对我没有帮助,但也许我做错了什么,idk。
我是 nube,所以没有代表,所以不能内联评论......虽然我很喜欢 @Ipse 的解决方案,但我也确保在脚本完成后关闭隐藏窗口......不确定是否 PS解决这种自动垃圾收集,但怀疑这是一个很好的最佳实践。
例如。在您的脚本结束时,我建议您这样做:
停止进程 -Id $PID
(这应该终止那个隐藏的窗口v。只是让它潜伏并占用这些资源)。