У меня есть несколько процессов, которые я хочу автоматизировать с помощью виртуальной машины Azure. Я хочу автоматически запустить его, запустить что-нибудь, затем выключить и деинициализировать его до следующего запланированного запуска.
Я могу запустить что-то при загрузке, используя планировщик задач и настроив что-то для запуска при запуске, до входа в систему. Это отлично работает с написанным мною консольным приложением, которое просто выполняет разные операции и записывает данные в базу данных, не пытаясь открыть окно. Он не работает с пакетным файлом, как я изначально и хотел - использовать пакетный файл для запуска сценария PowerShell, который запускает мое приложение, а затем использует код возврата, чтобы решить, нужно ли выключить и отключить. Очевидная разница - это окно консоли, поэтому я подозреваю, что на данный момент пользовательского интерфейса нет, и cmd задыхается, ожидая его.
Это создает проблему для следующей задачи - периодически использовать программное обеспечение для очистки экрана, чтобы выполнять операции на удаленном веб-сайте, извлекать записи и сохранять их в локальной БД. Для удаленного сервиса нет API. Без пользовательского интерфейса я не могу запустить Firefox в режиме марионетки и делать обновления записей.
Я пробовал добавлять записи в реестр, как описано в Вот и установка задачи для запуска после входа в систему, но задача никогда не запускается, и хотя я не могу быть уверен, что это выглядит как пользовательский интерфейс появляется после подключения сеанса удаленного рабочего стола.
Я видел решение, которое использует Powershell на локальном ноутбуке для сценария запуска виртуальной машины и установления подключения к удаленному рабочему столу, но если бы я собирался оставить ноутбук включенным для этого, ноутбук также может делать все, чего я не хочу - в этом весь смысл попыток поместить это в Azure.
Итак, кто-нибудь делал что-то подобное и знает, как заставить виртуальную машину Azure полностью войти в рабочий стол, на котором выполнен вход, без какого-либо вмешательства извне?
Если вы используете Развертывание шаблона ARM вы можете использовать следующие OSProfile для Windows-машины для настройки AutoLogon:
"osProfile": {
"computerName": "[parameters('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"WindowsConfiguration": {
"additionalUnattendContent": [
{
"passName": "oobesystem",
"componentName": "Microsoft-Windows-Shell-Setup",
"settingName": "AutoLogon",
"content": "[concat('<AutoLogon><Password><Value>', parameters('adminPassword'), '</Value><PlainText>true</PlainText></Password><Enabled>true</Enabled><Username>', parameters('adminUsername'), '</Username></AutoLogon>')]"
}
]
}
}
Итак, кто-нибудь делал что-то подобное и знает, как заставить виртуальную машину Azure полностью войти в рабочий стол, на котором выполнен вход, без какого-либо вмешательства извне?
Вы можете использовать следующие командлеты для входа в свою виртуальную машину без какого-либо взаимодействия.
echo "Connecting to 23.98.218.139"
$Server="23.98.218.139"
$User="user"
$Password="********"
cmdkey /generic:TERMSRV/$Server /user:$User /pass:$Password
mstsc /v:$Server
Сохраните сценарий как сценарий Power Shell и выполните его в зависимости от ваших потребностей. Для получения дополнительной информации обратитесь к этому ссылка на сайт.
Примечания: Когда вы впервые входите в свою виртуальную машину, вы должны доверять своему компьютеру.