Я нашел пару ответов здесь несколькими разными способами. Все они ломаются в промежутке между Powershell и сценариями
Sub Test()
Dim scriptlocation As String
scriptlocation = "C:\REDACTED\Powershell Scripts\ConmonInfoFinder-V7.ps1"
Dim x As Variant
x = Shell("""POWERSHELL.exe"" ""C:\REDACTED\Powershell Scripts\ConmonInfoFinder-V7.ps1""", vbNormalFocus)
End Sub
или
Sub Test()
Dim scriptlocation As String
scriptlocation = "C:\REDACTED\Powershell Scripts\Powershell Scripts\ConmonInfoFinder-V7.ps1"
strCommand = "Powershell -File" & scriptlocation
Set WshShell = CreateObject("WScript.Shell")
Set WshShellExec = WshShell.Exec(strCommand)
End Sub
Оба эти открытых Powershell, но они не будут запускать сценарий. Первый умирает в промежутке между скриптами Powershell, а второй мигает без ошибок, но не запускает скрипт.
Мысли?
РЕДАКТИРОВАТЬ: я внес некоторые изменения
Sub Test()
Dim scriptlocation As String
scriptlocation = "C:\REDACTED\Powershell Scripts\trial.ps1"
strCommand = "Powershell -NoExit -File """ & scriptlocation & """"
Set WshShell = CreateObject("WScript.Shell")
Set WshShellExec = WshShell.Exec(strCommand)
Окна все еще вспыхивают, а затем исчезают. Я сделал пример скрипта Hello World, чтобы убедиться, что в моем скрипте нет ничего странного, и у меня тот же результат.
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ:
Теперь он исправлен
Sub Test2()
Dim scriptlocation As String
scriptlocation = "C:\REDACTED\Powershell Scripts\ConmonInfoFinder-V7.ps1"
strCommand = "Powershell -ExecutionPolicy Bypass -NoExit -File """ & scriptlocation & """"
Set WshShell = CreateObject("WScript.Shell")
WshShell.Exec (strCommand)
End Sub