2

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

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

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

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

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

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

2 ответа2

1
strcmd="cmd /c " & sCurPath & "\vsswritercheck.bat"
return = wshshell.run(strcmd , 0 , true)
if return=0 then
    blnSuccess = True
else
    blnSuccess = False
end if
0

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

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

Это немного странно, но без усилий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .