我有一个运行PowerShell并提交结果的VBA脚本。我遇到的问题是GUI窗口弹出然后消失。有没有办法让PowerShell GUI在运行时完全隐藏?
这是代码的重点。我添加了-WindowStyle Hidden,它使GUI消失了,但是它仍然闪烁了几秒钟然后消失了。
Do Until i = LRow + 1
ADGroup = Cells(i, 2)
' Construct PowerShell Command (PS syntax)
strPSCommand = "Get-ADGroupMember -Identity " & ADGroup & " -Recursive |select name"
Debug.Print strPSCommand
' Consruct DOS command to pass PowerShell command (DOS syntax)
strDOSCommand = "powershell -WindowStyle Hidden -command " & strPSCommand & ""
' Create shell object
Set objShell = CreateObject("Wscript.Shell")
' Execute the combined command
Set objExec = objShell.Exec(strDOSCommand)
' Read output into VBS variable
strPSResults = objExec.StdOut.ReadAll
Cells(i, 3).Value = strPSResults
i = i + 1
Loop
答案 0 :(得分:1)
powershell.exe是一个控制台应用程序。进程启动时,操作系统会自动创建控制台窗口。因此,在打开控制台窗口并刷新后,将执行处理-WindowStyle隐藏的powershell.exe代码。要解决此问题,我们需要使用等效的wscript,即Win32主机应用程序而不是控制台主机应用程序。