У меня есть электронная таблица 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