В Windows 10 есть такая прикольная утилита как ScriptRunner. Она позволяет запускать один или нескольких скриптов или исполняемых файлов. Утилита ScriptRunner.exe изначально разрабатывалась для применения в средствах виртуализации приложений Microsoft (App-V). Данная технология позволяет системным администраторам делать определенные приложения доступными для конечных пользователей, не устанавливая эти приложения непосредственно на их компьютеры. Утилита устанавливалась как часть средства виртуализации приложений и использовалась в качестве средства запуска множества сценариев по одному триггеру (запускающему событию). Средство виртуализации приложений App-V входит в состав пакета оптимизации рабочего стола Майкрософт (MDOP), который входит в состав подписки Microsoft Software Assurance.
Для получения подсказки по применению ScriptRunner.exe используется команда:
ScriptRunner /?
Формат командной строки:
ScriptRunner.exe -appvscript scriptFileName [Arguments] [-appvscriptrunnerparameters [-wait] [-timeout=] [-rollbackonerror]]
Параметры командной строки:
-appvscript - этот параметр задает имя файла сценария, исполняемого или командного файла (scriptFileName) и аргументы командной строки (Arguments), если они есть.
-appvscriptrunnerparameters - этот параметр определяет режим ожидания завершения сценария (-wait) и интервал ожидания в секундах (-timeout=TimeInSeconds), а также режим выполнения при возникновении ошибки (-rollbackonerror).
По умолчанию для параметра -appvscriptrunnerparameters приняты значения – нет ожидания, нет таймаута, нет обработки ошибок ( No wait, No timeout, No rollback on error).
Параметры разделяются символом пробела в Unicode (U+0020).
Откат при ошибке работает так: если сценарий создает новый выходной файл, откат удаляет файл, но если сценарий обновляет или заменяет существующий файл, откат не отменяет эти изменения.
Если команда Scriptrunner содержит более одного предложения -appvscript, откат при ошибке может не работать ни для одного из сценариев.
Примеры использования:
- запустить приложение “Блокнот” (notepad.exe) и приложение ”Wordpad” (write.exe):
ScriptRunner.exe -appvscript notepad.exe -appvscript write.exe
- запустить приложение “Блокнот” (notepad.exe) и ждать его завершения, после чего запустить приложение ”Wordpad” (write.exe):
ScriptRunner.exe -appvscript notepad.exe -appvscriptrunnerparameters -wait -appvscript write.exe
- запустить приложение "Блокнот" для просмотра файла журнала cbs.log и, если через 30 секунд приложение не будет закрыто, завершить его и открыть этот же файл для просмотра в редакторе WordPad:
ScriptRunner.exe -appvscript notepad.exe C:\Windows\Logs\CBS\CBS.log -appvscriptrunnerparameters -wait -timeout=30 -appvscript write.exe C:\Windows\Logs\CBS\CBS.log
Если же добавить параметр -rollbackonerror, то результат будет иным – запустится только "Блокнот":
ScriptRunner.exe -appvscript notepad.exe C:\Windows\Logs\CBS\CBS.log -appvscriptrunnerparameters -wait -timeout=30 -rollbackonerror -appvscript write.exe C:\Windows\Logs\CBS\CBS.log
В данном случае, если Блокнот не был закрыт в течении 30 секунд пользователем, он будет принудительно завершен (Terminating process on timeout ) и это воспринимается как ошибка сценария (Script failed. RetCode = 1)
Можно использовать паузу при выполнении команды:
ScriptRunner.exe -appvscript cmd "/c" "pause" -appvscriptrunnerparameters -wait -timeout=20
Можно использовать разные параметры для разных скриптов в одной строке:
ScriptRunner.exe -appvscript demoА.cmd arg1 arg2 -appvscriptrunnerparameters -wait -timeout=30 -rollbackonerror -appvscript demoB.ps1 arg3 arg4 -appvscriptrunnerparameters -wait -timeout=30 -rollbackonerror
Можно даже использовать XML-файлы в качестве конфига для ScriptRunner-а:
ScriptRunner in DeploymentConfig.xml, UserConfig.xml and AppxManifest.xml files (all trigger events).
Например такого содержания:
<MachineScripts>
<AddPackage>
<Path>ScriptRunner.exe>/Path>
<Argument>
-appvscript script1.exe arg1 arg2 –appvscriptrunnerparameters –wait –timeout=10
-appvscript script2.vbs arg1 arg2
-appvscript script3.cmd arg1 arg2 –appvscriptrunnerparameters –wait –timeout=30 –rollbackonerror
</Arguments>
<Wait timeout="40" RollbackOnError="true"/>
</AddPackage>
</MachineScripts>
No comments:
Post a Comment
А что вы думаете по этому поводу?