Автоматический запуск приложения на виртуальной машине Microsoft, полученной из Azure Marketplace

Я развернул образ виртуальной машины Windows Server 2016 в Microsoft Azure Marketplace. Образ содержит несколько сценариев запуска и программ, которые необходимо выполнить, когда клиент запускает виртуальную машину, созданную из образа, полученного из Marketplace.

Как я могу заставить эти скрипты и программы запускаться автоматически каждый раз, когда клиент перезагружает виртуальную машину?

Некоторая предыстория ... (1) Я создал задачу с помощью диспетчера задач Windows, и это работает, если я могу гарантировать, что клиент создаст пользователя с правами администратора с идентификатором пользователя и паролем, идентичными тем, которые я использовал при создании исходной виртуальной машины, в противном случае существующая запланированная задача завершится неудачно, поскольку не сможет найти исходный идентификатор пользователя.

(2) Некоторые из моих компонентов уже являются службами Windows, но мне все еще нужно запустить сценарий для выполнения ряда шагов по установке, специфичных для виртуальной машины. Это не похоже на роль службы. Кроме того, у служб Windows значение тайм-аута запуска слишком мало для шагов установки, которые необходимо выполнить.

Любая помощь будет оценена.


person djhallx    schedule 18.10.2018    source источник


Ответы (1)


Поскольку вы находитесь в Azure, у вас есть несколько разных вариантов, но я рекомендую именно этот.

Используйте Процесс файла SetupComplete.cmd или Unattend.xml - он встроен в Windows, поэтому ничего особенного не должно происходить. По сути, вы создадите свой собственный сценарий SetupComplete, который имеет логику, которую необходимо выполнить для установки наших приложений и перенастроить сервер Windows для работы в качестве нового пользователя, который создается при использовании образа для создания новой виртуальной машины. Обратите внимание, что в Azure Microsfot использует SetupComplete, поэтому вам следует называть свой SetupComplete2.cmd. Я использовал эту технику для запуска пользовательских сценариев PowerShell. Таким образом, SetupComplete2.cmd вызовет сценарий PowerShell. Вы можете иметь столько их, сколько хотите, просто назовите их по порядку номера, который вы хотите, чтобы эти два запускались. Скрипты необходимо поместить в папку C: \ Windows \ OEM.

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

Наконец, вы потенциально можете использовать Custom Расширения сценариев в Azure, но я не знаю, как принудительно использовать эти расширения как часть образа торговой площадки.

О, и последнее. Я предполагаю, что вы запускаете SysPrep для того образа, который создаете. Если нет, то это тоже неплохо.

person Jamie    schedule 18.10.2018
comment
Спасибо. Это заставило меня начать. Кажется, что файл C: \ Windows \ Setup \ Scripts \ SetupComplete.cmd вызывается только при начальной инициализации ОС, а не при перезагрузке. Этот файл вызывает C: \ Windows \ OEM \ SetupComplete.cmd, который, в свою очередь, вызывает C: \ Windows \ OEM \ SetupComplete2.cmd. Это подходящее место для вызова программ инициализации OEM-систем. - person djhallx; 19.10.2018
comment
Если вы нашли это полезным и считаете, что он отвечает на ваш вопрос, не забудьте отметить его как ответ. - person Jamie; 19.10.2018