strcmd="cmd /c " & sCurPath & "\vsswritercheck.bat" return = wshshell.run(strcmd, 0, true) if return=0 then blnSuccess = True else blnSuccess = False end if
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
С первым фрагментом кода (закомментированным) я могу запустить команду и получить стандартный вывод из командного файла. Во втором фрагменте кода я не могу перехватить стандартный вывод.
Мне нужно иметь возможность запускать пакетный скрипт с повышенными разрешениями, поэтому я ищу компромисс между функциональностью этих двух.
Я не могу запустить весь вызывающий скрипт в режиме повышенных прав из-за ограничений других функций.
Я ищу какие-либо идеи о том, как добавить этот вывод в мой журнал, поскольку у меня заканчиваются опции, входящие в сферу основных сценариев.
2 ответа на вопрос
Как насчет использования их обоих?
Используйте тот код, который вы закомментировали, который работает в режиме без повышенных прав, и добавьте дополнительный тест, в котором, если требуются повышенные права, сценарий вместо этого будет вызывать себя с помощью ShellExecute (), в результате чего последующий вызов Exec () уже будет иметь повышенные права и до сих пор захватить стандартный вывод.
Это немного странно, но без усилий.
Похожие вопросы
-
11
Как мне пакетно изменить дату получения информации в данных EXIF?
-
4
Для чего нужен EX-режим для пакетной обработки?
-
1
Пакетное сканирование много картинок
-
-
2
Как я могу удалить файлы на КПК с помощью CMD / Batch file
-
3
Можно ли изменить значок файла bat MS-DOS?
-
1
Как запустить пакетный файл для резервного копирования на VPN-диск?
-
6
Как создать автоматический установщик для различных приложений в Windows?
-
7
Проблема с динамическим IP - нужен пакетный файл
-
4
Пакетное преобразование .doc в .docx (и эквивалентно для других офисных форматов)?
-
16
Как подавить подтверждение «Прервать пакетное задание (Y / N)»?