Вызов скрипта Powershell из VBA (с параметром) - PullRequest
0 голосов
/ 19 октября 2018

Я хочу вызвать скрипт PowerShell из Excel VBA и передать 1 параметр.Без VBA скрипт работает отлично и делает то, что должен делать. Как только вызов сработает, я бы хотел добавить 1 параметр, но сначала успешный вызов ...

Но я не могу позвонитьэто в Excel VBA.Сначала я покажу вам мой скрипт Powershell:

#param([string]$server)
$server = "chvmes01"

$BasicPath = Split-Path $script:MyInvocation.MyCommand.Path

write-host $BasicPath

Invoke-Command -FilePath $BasicPath\IISReport.ps1 -ComputerName $server

Read-Host "Return drücken..."

В VBA я создал этот код:

strCommand = "Powershell.exe -ExecutionPolicy ByPass -NoExit -File """ & BasicPath & """, 1"
Set WsShell = CreateObject("WScript.Shell")
WsShell.Run (strCommand)

strCommand выглядит следующим образом:

Powershell.exe -ExecutionPolicy Unrestricted -NoExit -File "E: \ Temp \ Registry \ EXCEL_ALLE \ Version_AllFromExcel_Aktuell \ IISReport \ InvokeCommand.ps1", 1

Вот так я получаю следующую ошибку: enter image description here

Я понятия не имею, что я могу изменить больше, я прочитал так много сообщений на форуме и изменил разные вещи, но ничего не получалось!

Я пытался с strCommand без "", как это:

strCommand = "Powershell.exe -ExecutionPolicy ByPass -NoExit -File " & BasicPath & ", 1"

Я пытался

-ExecutionPolicy Unrestricted AND -ExecutionPolicy ByPass 

Я пытался с и без

-NoExit

Я также пытался

Shell (strCommand)

Как я уже говорилСкрипты отлично работают без VBA!Кто-нибудь может помочь здесь?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Я нашел решение !!

На самом деле комментарий @ Pᴇʜ привел меня к ответу!

Я перепутал

Set WsShell = CreateObject("WScript.Shell")
WsShell.Run (strCommand)

с

Shell (strCommand)

", 1" только для Команды Оболочки.

Мне нужно было только изменить мою команду strCommand на

    strCommand = "Powershell.exe -ExecutionPolicy ByPass -NoExit -File " & BasicPath
    Set WsShell = CreateObject("WScript.Shell")
    WsShell.Run (strCommand)

и она работает!

Теперь я могу попробовать передать параметр в powershell!Большое спасибо!

0 голосов
/ 19 октября 2018

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

strCommand = "Powershell.exe -ExecutionPolicy ByPass -NoExit -File '" & BasicPath & "'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...