Введите несколько команд в PowerShell и верните ввод - PullRequest
0 голосов
/ 28 июня 2019

У меня есть электронная таблица xlsm с большой автоматизацией VBA. В настоящее время он выполняет несколько отдельных команд PowerShell и считывает выходные данные (мне нужен PowerShell, чтобы использовать существующие командлеты для взаимодействия с другим программным пакетом).

Я надеялся улучшить взаимодействие с конечным пользователем, оставив один экземпляр PowerShell открытым вместе с Excel, чтобы я мог передавать любые новые команды по мере необходимости, не выполняя тот же набор предыдущих команд (включая требование входа пользователя в систему). каждый раз). Кто-нибудь знает способ подключиться к существующему экземпляру PowerShell и выполнить новую команду? Текущий метод, использованный для создания команды Powershell и чтения выходных данных, основан на этом примере от пользователя "Nilpo": Метод Exec объекта WshShell

Sub shellTest(command As String)
    Dim shell, exec
    Dim retVal, output As Variant
    Dim i As Integer

    Set shell = CreateObject("WScript.Shell")
    Set exec = shell.exec(command)
    While exec.Status = 0 'still running
        Application.Wait (50)
    Wend

    If exec.Status = 2 Then 'failed
        retVal = exec.StdErr.ReadAll
    Else
        retVal = exec.StdOut.ReadAll
    End If

    If retVal <> "" Then
        Debug.Print retVal
    End If
End sub

'Feed in commands
Sub Commands()
    'Log in to app, somehow need to keep PowerShell open for next command?
    shellTest "PowerShell new-pwlogin -BentleyIMS"

    'This is where I need to maintain previous command (login) to get user info
    shellTest "get-PWCurrentUser"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...