隐藏Powershell窗口从弹出窗口| VBA

时间:2020-02-28 13:18:28

标签: excel vba powershell excel-2013

我有一个运行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

1 个答案:

答案 0 :(得分:1)

powershell.exe是一个控制台应用程序。进程启动时,操作系统会自动创建控制台窗口。因此,在打开控制台窗口并刷新后,将执行处理-WindowStyle隐藏的powershell.exe代码。要解决此问题,我们需要使用等效的wscript,即Win32主机应用程序而不是控制台主机应用程序。