У меня есть скрипт CustomAction (да, я знаю все мнения, говорящие не использовать скрипт CustomActions. У меня другое мнение).
Я хотел бы запустить команду и зафиксировать вывод. Я могу сделать это с помощью COM-объекта WScript.Shell, а затем вызвать shell.Exec()
. Но это мигает видимым окном консоли для выполненной команды.
Чтобы избежать этого, я понимаю, что могу использовать вызов shell.Run()
и указать «скрытый» для внешнего вида окна. Но .Run()
не дает мне доступа к StdOut исполняемого процесса, так что это означает, что мне нужно создать временный файл и перенаправить вывод exe во временный файл, а затем прочитать этот временный файл в сценарии.
Некоторые вопросы:
это сработает?
Как сгенерировать имя для временного файла? В .NET я мог бы использовать статический метод в пространстве имен System.IO, но здесь я использую скрипт. Мне нужно убедиться, что у пользователя есть доступ RW, а также, что никакая антивирусная программа не будет блевать на это.
Лучшие идеи? Я очень стараюсь избегать C/C++.
Я мог бы избежать всего этого, если бы был способ запрашивать веб-сайты в IIS7 из скрипта, не прибегая к пакету совместимости IIS6, не используя .NET (Microsoft.Web.Administration.ServerManager) и без выполнения процесса (список сайтов appcmd). Я уже задал отдельный вопрос по этой теме; любые предложения по этому поводу также будут оценены.