VBScript захват StdOut из ShellExecute

Я пытаюсь запустить следующий фрагмент кода как часть инструмента для сбора и регистрации некоторых соответствующих системных диагностик. Цель этого фрагмента кода-собрать результат выполнения команды:

vssadmin list writers

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

'   Set WshShell = CreateObject("WScript.Shell")
'   WScript.Echo sCurPath & "vsswritercheck.bat"
'   Set WshShellExec = WshShell.Exec("elevate.cmd cmd.exe /c " & sCurPath & "vsswritercheck.bat")

Set oShell = CreateObject("Shell.Application")
oShell.ShellExecute "cmd.exe", sCurPath & "vsswritercheck.bat", , "runas", 1
vsswriter = VSSWriterCheck

Select Case oShell.Status
    Case WshFinished
        strOutput = oShell.StdOut.ReadAll
    Case WshFailed
        strOutput = oShell.StdErr.ReadAll
End Select
WScript.Echo strOutPut
vsswriter = strOutPut

С первым фрагментом кода (закомментированным) я могу запустить команду и захватить stdout из пакетного файла. Во втором коде я не могу захватить stdout.

мне нужно иметь возможность запускать партии сценарий с повышенными разрешениями, поэтому я ищу компромисс между функциональностью двух.

Я не могу запустить весь вызывающий скрипт в повышенном режиме из-за ограничений других функций.

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

19
задан Joe
24.11.2022 10:50 Количество просмотров материала 3381
Распечатать страницу

2 ответа

strcmd="cmd /c " & sCurPath & "\vsswritercheck.bat"
return = wshshell.run(strcmd , 0 , true)
if return=0 then
    blnSuccess = True
else
    blnSuccess = False
end if
1
отвечен José Luís Teixeira 2022-11-25 18:38

Как насчет использования их обоих?

используйте этот закомментированный код, который работает в режиме без повышенных прав, и добавьте дополнительный тест, где, если требуются повышенные права, сценарий будет вместо этого вызывать себя с помощью ShellExecute (), в результате чего последующий вызов Exec () уже имеет повышенные права и по-прежнему захватывает stdout.

Это немного странно, но легко.

0
отвечен Crafty 2022-11-25 20:55

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх