EXCEL VBA - Запуск сценария powershell из Excel - Проблемы с пробелом в пути - PullRequest
0 голосов
/ 31 октября 2019

Я нашел пару ответов здесь несколькими разными способами. Все они ломаются в промежутке между 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

Ответы [ 2 ]

3 голосов
/ 31 октября 2019
strCommand = "Powershell -File" & scriptlocation

должно быть

strCommand = "Powershell -File """ & scriptlocation & """"

Используйте флаг -noexit, если вы хотите оставить окно открытым, чтобы видеть, что происходит.

1 голос
/ 31 октября 2019

Политика выполнения не задана, поэтому сценарий не будет работать по умолчанию. Команда параметров ExecutionPolicy должна быть:

strCommand = "powershell -ep Bypass -F " & scriptlocation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...