Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция выполнения команд использует агент виртуальной машины для выполнения сценариев PowerShell в виртуальной машине Windows Azure. Эти сценарии можно использовать для общего управления компьютерами или приложениями. Они могут помочь вам быстро диагностировать и исправлять проблемы доступа к виртуальной машине и сети, а также восстановить работоспособность виртуальной машины.
Льготы
Доступ к виртуальным машинам можно получить несколькими способами. Выполнение команд может удаленно выполнять сценарии на виртуальных машинах с помощью их агента. Выполнение команд используется на портале Microsoft Azure, REST API или PowerShell для виртуальных машин Windows.
Эта возможность полезна во всех сценариях, где требуется выполнить скрипт на виртуальной машине. Это один из способов устранения неполадок и исправления виртуальной машины, на которой не открыт порт RDP или SSH из-за неправильной настройки сети или пользователя с правами администратора.
Необходимые компоненты
Поддерживаемые операционные системы Windows
| Версия ОС | x64 | ARM64 |
|---|---|---|
| Windows 10 | Поддерживается | Поддерживается |
| Windows 11 | Поддерживается | Поддерживается |
| Windows Server 2016 | Поддерживается | Поддерживается |
| Windows Server 2016 Core | Поддерживается | Поддерживается |
| Windows Server 2019 | Поддерживается | Поддерживается |
| Windows Server 2019 Core | Поддерживается | Поддерживается |
| Windows Server 2022 | Поддерживается | Поддерживается |
| Windows Server 2022 Core | Поддерживается | Поддерживается |
| Выпуск Windows Server 2022 Azure | Поддерживается | Поддерживается |
| Windows Server 2025 г. | Поддерживается | Поддерживается |
| Windows Server 2025 Core | Поддерживается | Поддерживается |
| Windows Server 2025 Azure Edition | Поддерживается | Поддерживается |
Ограничения
При использовании выполнения команд следует принимать во внимание перечисленные ниже ограничения.
- Выводятся только последние 4096 байт.
- Минимальное время выполнения сценария составляет около 20 секунд.
- Сценарии выполняются как системные в Windows.
- Два сценария не могут выполняться одновременно.
- Скрипты, запрашивающие сведения (интерактивный режим), не поддерживаются.
- Вы не можете отменить выполнение скрипта.
- Максимальное время выполнения сценария составляет 90 минут. После этого время ожидания истечет.
- Чтобы вернуть результаты скрипта, требуется разрешить исходящие подключения из виртуальной машины.
- Не рекомендуется запускать скрипт, который приведет к остановке или обновлению агента виртуальной машины. Это может позволить расширению в переходном состоянии, что привело к истечении времени ожидания.
Примечание.
Для надлежащей работы функции Выполнение команд требуется подключение (через порт 443) к общедоступным IP-адресам Azure. Если расширение не имеет доступа к этим конечным точкам, скрипты могут успешно выполняться, но результаты не будут возвращаться. Если вы блокируете трафик на виртуальной машине, вы можете использовать теги служб, чтобы разрешить трафик к общедоступным IP-адресам Azure с помощью тега AzureCloud.
Функция "Выполнение команд" не работает, если агент виртуальной машины находится в состоянии "Не готов". Проверьте состояние агента в свойствах виртуальной машины на портале Azure.
Доступные команды
В таблице ниже представлен список команд, доступных для виртуальных машин Windows. Команду RunPowerShellScript можно использоваться для выполнения любых пользовательских сценариев. При использовании Azure CLI или PowerShell для выполнения команды значение, указанное для параметра --command-id или -CommandId, должно быть одним из приведенных ниже значений. При указании значения, которое не является доступной командой, вы получите следующую ошибку:
The entity was not found in this Azure location
Доступные команды
| CommandID | Description | Дополнительные сведения |
|---|---|---|
| RunPowerShellScript | Выполняет скрипт PowerShell. | |
| IPConfig | Подробные сведения о IP-адресе, маске подсети и шлюзе по умолчанию для каждого адаптера, привязанного к TCP/IP. Сведения об использовании см. в разделе "Запуск сценариев" | readme |
| EnableWindowsUpdate | Включение автоматических обновлений с помощью Центра обновления Windows. | readme |
| DisableWindowsUpdate | Отключите автоматическое обновление с помощью Центра обновления Windows. | readme |
| EnableAdminAccount | Проверяет, отключена ли учетная запись локального администратора и включена ли она. | readme |
| EnableEMS | Включите службы аварийного управления (EMS), чтобы разрешить последовательное подключение консоли в сценариях устранения неполадок. | readme |
| EnableRemotePS | Активируйте удаленную оболочку PowerShell. | readme |
| IMDSCertCheck | Проверяет работоспособность IMDS, а затем анализирует установленные в настоящее время сертификаты, от которых зависит IMDS. Если отсутствуют, отображаются дополнительные сведения и шаги по устранению рисков. | readme |
| RDPSettings | Проверяет параметры реестра и параметры политики домена. Предлагает действия политики, если компьютер является частью домена или изменяет параметры на значения по умолчанию. | readme |
| ResetRDPCert | Удаляет SSL-сертификат, привязанный к прослушивателю RDP, и восстанавливает безопасность прослушивателя RDP по умолчанию. Используйте этот сценарий при появлении проблем с сертификатом. | readme |
| Windows_WindowsActivation_Validation | Проверяет текущее состояние лицензии Windows (активировано или нет) и создается оповещение, если компьютер не активируется. | readme |
| SetRDPPort | Задает номер порта по умолчанию или пользователя для подключений к удаленному рабочему столу. Включает правило брандмауэра для входящего доступа к порту. | readme |
| DisableNLA | Отключает проверку подлинности на уровне сети (NLA). Чтобы изменения вступили в силу, необходимо перезапустить виртуальную машину после завершения скрипта. Сам скрипт не перезапускает виртуальную машину. Этот скрипт можно использовать для отключения NLA, если подключения RDP завершаются ошибкой "Удаленный компьютер, к которому вы пытаетесь подключиться, требует проверку подлинности на уровне сети (NLA), но ваш контроллер домена Windows недоступен для выполнения NLA." или ошибка "Произошла ошибка проверки подлинности. Локальный центр безопасности не может быть контактирован. NLA — это функция безопасности, которая должна быть временно отключена, чтобы разрешить подключения RDP успешно выполняться до устранения проблемы с подключением контроллера домена. | readme |
Azure CLI
Примечание.
В зависимости от того, какой модальность используется для выполнения, может потребоваться некоторое экранирование. Например, если вы выполняете команду в сеансе PowerShell, путь к файлу скрипта должен иметь кавычки.
Ниже приведен пример с использованием команды az vm run-command для запуска сценария оболочки на виртуальной машине Windows Azure.
# script.ps1
# param(
# [string]$arg1,
# [string]$arg2
# )
# Write-Host This is a sample script with parameters $arg1 and $arg2
az vm run-command invoke --command-id RunPowerShellScript --name win-vm -g my-resource-group \
--scripts @script.ps1 --parameters "arg1=somefoo" "arg2=somebar"
Портал Azure
Перейдите к виртуальной машине на портале Azure и выберите Выполнить команду в меню слева под пунктом Операции. Появится список доступных команд, выполняемых на виртуальной машине.
Выберите команду для запуска. Некоторые команды могут иметь необязательные или обязательные входные параметры. Параметры для этих команд представлены в виде текстовых полей для ввода входных значений. В каждой команде можно развернуть Просмотреть скрипт, чтобы просмотреть выполняемый скрипт. Команда RunPowerShellScript отличается от других команд тем, что она позволяет использовать пользовательские сценарии.
Примечание.
Встроенные команды не редактируются.
Выбрав команду, выберите Выполнить, чтобы запустить скрипт. Скрипт выполняется и по завершении выдает результаты и возможные ошибки в окне вывода. На следующем рисунке показан пример сообщения после запуска команды RDPSettings.
PowerShell
Ниже приведен пример с использованием командлета Invoke-AzVMRunCommand для выполнения скрипта PowerShell на виртуальной машине Azure. Этот командлет ожидает, что скрипт, указанный в параметре -ScriptPath, расположен в локальной среде, в которой выполняется командлет.
Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunPowerShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}
Примечание.
Значения параметров могут быть только строкового типа, и скрипт отвечает за их преобразование в другие типы, если это необходимо.
Ограничение доступа к команде запуска
Для получения списка выполняемых команд или отображения сведений о команде требуется разрешение Microsoft.Compute/locations/runCommands/read на уровне подписки. Это разрешение имеется у встроенной роли Читатель и более высоких уровней.
Для выполнения команды требуется разрешение Microsoft.Compute/virtualMachines/runCommand/action. Это разрешение имеется у роли Участник виртуальной машины и более высоких уровней.
Можно использовать одну из встроенных ролей или создать пользовательскую роль для использования функции выполнения команд.
Устранение неполадок с Командным запуском действия
При устранении неполадок с командой выполнения действия для сред Windows обратитесь к файлу журнала RunCommandExtension , который обычно находится в следующем каталоге: C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log дополнительные сведения.
Известные проблемы
Если команда содержит зарезервированные символы, возможно, не удается выполнить расширение команды Run Command Extension в среде Windows. Например:
&Если символ передается в параметре команды, например приведенном ниже скрипте PowerShell, это может завершиться ошибкой.$paramm='abc&jj' Invoke-AzVMRunCommand -ResourceGroupName AzureCloudService1 -Name test -CommandId 'RunPowerShellScript' -ScriptPath C:\data\228332902\PostAppConfig.ps1 -Parameter @{"Prefix" = $paramm}^Используйте символ для экранирования&в аргументе, например$paramm='abc^&jj'Расширение команды run может также не выполняться, если команда, выполняемая для выполнения, содержит "\n" в пути, так как она будет рассматриваться как новая строка. Например,
C:\Windows\notepad.exeсодержит\nпуть к файлу. Рассмотрите возможность замены\n\Nна ваш путь.Убедитесь, что у вас нет пользовательских параметров в разделе
HKLM\SOFTWARE\Microsoft\Command Processor\AutoRunреестра (подробно здесь). Это может активироваться во время установки или включения расширений RunCommand и вызвать ошибку, например "XYZ не распознается как внутренняя или внешняя команда, операблная программа или пакетный файл".
Удаление команды выполнения действия
Если требуется удалить расширение windows для выполнения действия, см. следующие действия для Azure PowerShell и CLI:
Замените имя rgname и имя виртуальной машины соответствующим именем группы ресурсов и именем виртуальной машины в следующих примерах удаления.
Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandWindowsExtension'
az vm run-command invoke --command-id RemoveRunCommandWindowsExtension --name vmname -g rgname
Примечание.
При повторном применении команды запуска расширение будет установлено автоматически. Для устранения проблем, связанных с расширением, можно использовать команду удаления расширений.
Следующие шаги
Сведения о других способах удаленного выполнения сценариев и команд на виртуальной машине см. в разделе Выполнение сценариев в виртуальных машинах Windows.