Скрыть окно Powershell от всплывающих окон | VBA - PullRequest
2 голосов
/ 28 февраля 2020

У меня есть сценарий VBA, который запускает PowerShell и отправляет результаты. У меня проблема в том, что окно 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 Ответ

1 голос
/ 28 февраля 2020

powershell.exe - консольное приложение. Окно консоли автоматически создается ОС при запуске процесса. Таким образом, код powershell.exe, который обрабатывает -WindowStyle Hidden, выполняется после открытия окна консоли, следовательно, fla sh. Чтобы это исправить, нам понадобится эквивалент wscript, то есть хост-приложение win32 вместо консольного хост-приложения.

...