Назад | Перейти на главную страницу

Автоматический вход в виртуальную машину Azure

У меня есть несколько процессов, которые я хочу автоматизировать с помощью виртуальной машины 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 и выполните его в зависимости от ваших потребностей. Для получения дополнительной информации обратитесь к этому ссылка на сайт.

Примечания: Когда вы впервые входите в свою виртуальную машину, вы должны доверять своему компьютеру.