Что такое Azure PowerShell?
Azure PowerShell — это набор командлетов для управления ресурсами Azure непосредственно из PowerShell. Хотя начать работу с Azure PowerShell очень просто, это средство предоставляет мощные функции для автоматизации.
Модуль Az PowerShell
Az PowerShell — это рекомендуемый модуль PowerShell для управления ресурсами Azure на всех платформах.
Для работы с модулем на разных платформах рекомендуется использовать PowerShell, начиная с версий 7.0.6 LTS и 7.1.3.
Модуль Az PowerShell можно установить локально в Windows, macOS или Linux. С ним также можно работать в браузере, используя Azure Cloud Shell, или в контейнере Docker. Дополнительные сведения см. в документации по Azure PowerShell.
Аутентификация
Azure PowerShell поддерживает несколько методов проверки подлинности. Подробные сведения о проверке подлинности в Azure, выполняемой в модуле Az PowerShell, см. в статье Способы аутентификации, доступные в Azure PowerShell.
Структура модуля
Модуль Az PowerShell — это оболочка для модулей PowerShell, предназначенных для разных служб Azure (например, Az.Network для сетевых служб Azure или Az.AKS для Службы Azure Kubernetes).
Модуль совершает вызовы REST к Azure API с помощью командлетов. Критические изменения в модуле выпускаются дважды в год. Многие из них реализуются на уровне API в командлетах, поэтому их появление не вызовет изменений в работе пользователей.
Командлеты модуля Az PowerShell выполняют в Azure операции на уровне управления и в плоскости данных. Уровень управления предназначен для управления ресурсами в подписке. Плоскость данных предназначена для использования возможностей, предоставляемых вашим экземпляром ресурса определенного типа. Дополнительные сведения см. в статье Уровень управления и плоскость данных Azure.
Выходные объекты
Прочие модули
Модули AzureAD и MSOnline PowerShell не являются частью модуля Az PowerShell. Дополнительные сведения об этих модулях см. в документации по Azure Active Directory PowerShell для Graph.
Устаревшие модули Azure PowerShell
Модуль AzureRM PowerShell
Так как модули PowerShell Az теперь обладают всеми возможностями модулей PowerShell AzureRM, а также многими другими, 29 февраля 2024 г. мы прекратим поддержку модулей PowerShell AzureRM.
Чтобы избежать прерываний в работе служб, обновите скрипты, использующие модули PowerShell AzureRM, для использования модулей PowerShell Az, до 29 февраля 2024 г. Чтобы автоматически обновить скрипты, следуйте инструкциям из этого краткого руководства.
Модуль AzureRM PowerShell больше не рекомендуется использовать, так как было объявлено о прекращении его поддержки, а это значит, что новые функции больше не будут добавляться. Кроме того, у него нет кроссплатформенной поддержки. Дополнительные сведения см. в статье Обзор модуля AzureRM PowerShell.
Модуль Azure PowerShell
Командлеты модуля Azure PowerShell позволяют управлять устаревшими ресурсами Azure, которые используют API управления службами.
Некоторые из этих командлетов были объявлены устаревшими для всех или только новых клиентов. Сведения о сроке окончания поддержки отдельных командлетов можно найти на соответствующих справочных страницах. Дополнительные сведения см. в статье Общие сведения о модуле управления службами Azure PowerShell.
Краткое руководство по использованию PowerShell в Azure Cloud Shell
В этом документе объясняется, как использовать PowerShell в Cloud Shell на портале Azure.
Также вы можете ознакомиться с кратким руководством по использованию Bash в Azure Cloud Shell.
Запуск Cloud Shell
Нажмите кнопку Cloud Shell в верхней панели навигации портала Azure.
Выполнение команд PowerShell
Выполните обычные команды PowerShell в Cloud Shell. Примеры таких команд приведены ниже.
Взаимодействие с виртуальными машинами
Вызов сценария PowerShell на удаленных виртуальных машинах
Если у вас есть виртуальная машина MyVM1, воспользуемся Invoke-AzVMCommand для вызова сценария PowerShell на удаленном компьютере.
Интерактивный вход на удаленную виртуальную машину
Можно выполнить Enter-AzVM для интерактивного входа на виртуальную машину в Azure.
Также можно сначала выполнить переход к VirtualMachines каталогу и запустить его Enter-AzVM следующим образом:
Обнаружение веб-приложений
Использование SSH
Следуйте инструкциям из этой статьи, чтобы создать конфигурацию виртуальной машины с помощью командлетов Azure PowerShell. Прежде чем вызвать New-AzVM для запуска развертывания, добавьте открытый ключ SSH в конфигурацию виртуальной машины. Новая виртуальная машина будет содержать открытый ключ в расположении
Вывод списка доступных команд
Установка пользовательских модулей
Get-Help
Чтобы получить справку по определенному командлету, введите Get-Help и этот командлет.
Использование файлов Azure для хранения данных
Использование пользовательского профиля
О том, как создать профиль, можно узнать в разделе About Profiles (О профилях).
Использование Git
Чтобы клонировать репозиторий Git в Cloud Shell, создайте личный маркер доступа и используйте его в качестве имени пользователя. Создав маркер, клонируйте репозиторий, как показано ниже.
Выйдите из оболочки
Задача Azure PowerShell
Azure Pipelines
Эта задача предназначена для запуска сценария PowerShell в среде Azure. Проверка подлинности контекста Azure выполняется с помощью указанного подключения к службе Azure Resource Manager.
Фрагмент кода YAML
Аргументы
Примеры
Диагностика
Скрипт работал локально, но завершился сбоем в конвейере
Обычно это происходит, когда соединение службы, используемое в конвейере, имеет недостаточно разрешений для выполнения скрипта. В локальной среде сценарий выполняется с вашими учетными данными и будет выполнен успешно, так как у вас может быть необходимый доступ.
Чтобы устранить эту проблему, убедитесь, что учетные данные субъекта-службы или аутентификации имеют необходимые разрешения. Дополнительные сведения см. в статье использование Role-Based управления доступом для управления доступом к ресурсам подписки Azure.
Ошибка: не удалось найти модули: » » с версией: » «. если модуль был недавно установлен, повторите попытку после перезапуска агента задач Azure Pipelines
для взаимодействия с подпиской azure Azure PowerShell задача использует модуль PowerShell azure/AzureRM/Az. Эта проблема возникает, когда модуль PowerShell недоступен на размещенном агенте. таким образом, для конкретной версии задачи предпочтительная версия Azure PowerShell должна быть указана в параметрах версии Azure PowerShell из списка доступных версий. Установленное программное обеспечение можно найти в таблице программного обеспечения в агентах, размещенных в Майкрософт.
Проблемы с подключением к службе
Сведения об устранении неполадок, связанных с подключениями служб, см. в статье Устранение неполадок подключения службы.
Открытый код
Эта задача является открытым исходным кодом на GitHub. Отзывы и вклады приветствуются.
Управление Azure CDN с помощью PowerShell
PowerShell — это одно из самых гибких средств управления профилями и конечными точками Azure CDN. PowerShell можно использовать интерактивно или подготовить скрипты для автоматизации задач управления. В этом руководстве описано несколько распространенных задач по управлению профилями и конечными точками Azure CDN, которые можно выполнять с помощью PowerShell.
Предварительные требования
В этой статье предусмотрено использование модуля Azure Az PowerShell, который является рекомендуемым модулем PowerShell для взаимодействия с Azure. Чтобы начать работу с модулем Az PowerShell, ознакомьтесь со статьей Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Чтобы использовать PowerShell для управления профилями и конечными точками Azure CDN, прежде всего нужно установить модуль Azure PowerShell. Сведения об установке Azure PowerShell и подключении к Azure с помощью командлета Connect-AzAccount см. в статье How to install and configure Azure PowerShell (Установка и настройка Azure PowerShell).
Получение списка командлетов Azure CDN
Получение справки
Получение списка существующих профилей Azure CDN
Этот результат можно передавать в командлеты для перечисления.
Также можно получить отдельный профиль, указав имя профиля и группу ресурсов.
Получение списка существующих конечных точек CDN
Get-AzCdnEndpoint позволяет получить отдельную конечную точку или все конечные точки в профиле.
Создание конечных точек и профилей CDN
Проверка доступности имени конечной точки
Get-AzCdnEndpointNameAvailability возвращает объект с информацией о том, свободно ли указанное имя конечной точки.
Добавление личного домена
New-AzCdnCustomDomain добавляет пользовательское имя домена для существующей конечной точки.
Необходимо настроить запись CNAME у вашего поставщика DNS, как описано в статье Как сопоставить личный домен с конечной точкой сети доставки содержимого (CDN). Это сопоставление можно проверить с помощью Test-AzCdnCustomDomain до изменения конечной точки.
Изменение конечной точки
Set-AzCdnEndpoint изменяет существующую конечную точку.
Очистка и предварительная загрузка ресурсов CDN
Unpublish-AzCdnEndpointContent очищает все кэшированные ресурсы, а Publish-AzCdnEndpointContent предварительно загружает ресурсы на всех поддерживаемых конечных точках.
Запуск и остановка конечных точек CDN
Start-AzCdnEndpoint и Stop-AzCdnEndpoint позволяют запускать и останавливать отдельные конечные точки или группы конечных точек.
Создание политики обработчика стандартных правил и применение ее к существующей конечной точке CDN
Удаление ресурсов CDN
Remove-AzCdnProfile и Remove-AzCdnEndpoint позволяют удалять профили и конечные точки.
Рабочий процесс PowerShell для службы автоматизации Azure
Модули runbook в службе автоматизации Azure реализованы в виде рабочих процессов Windows PowerShell, то есть скриптов Windows PowerShell, использующих Windows Workflow Foundation. Рабочий процесс — это последовательность связанных программируемых операций, в ходе которых выполняются длительные задачи или скоординированные действия на нескольких устройствах или управляемых узлах.
Хотя рабочий процесс определяется в синтаксисе Windows PowerShell и запускается средой Windows PowerShell, его обработка выполняется в Windows Workflow Foundation. Преимущества рабочего процесса в сравнении с использованием обычного скрипта заключаются в возможности одновременного выполнения действия применительно ко многим устройствам и автоматического восстановления после сбоев.
Эта статья применима к PowerShell 5,1; PowerShell 7,1 (Предварительная версия) не поддерживает рабочие процессы. Скрипт рабочего процесса PowerShell очень похож на скрипт Windows PowerShell, но имеет ряд существенных отличий, которые могут запутать нового пользователя. Поэтому рекомендуется создавать модули runbook с помощью рабочего процесса PowerShell только в том случае, если необходимо использовать контрольные точки.
Дополнительные сведения по темам, рассмотренным в этой статье, см. на странице Общие сведения о рабочем процессе Windows PowerShell.
Использование ключевого слова Workflow
Имя рабочего процесса должно соответствовать имени модуля Runbook в службе автоматизации. При импорте модуля runbook имя файла должно соответствовать имени рабочего процесса и заканчиваться на .ps1.
Чтобы добавить параметры в рабочий процесс, используйте ключевое слово Param (как и в случае скрипта).
Сведения о различиях между кодом рабочего процесса PowerShell и кодом скрипта PowerShell
Код рабочего процесса PowerShell выглядит почти так же, как код скрипта PowerShell, но с некоторыми существенными изменениями. В следующих разделах описываются изменения, которые нужно внести в сценарий PowerShell, чтобы он выполнялся как рабочий процесс.
Действия
Действие — это конкретная задача в рабочем процессе, которая выполняется в свою очередь. Рабочий процесс Windows PowerShell автоматически преобразует множество командлетов Windows PowerShell в действия при выполнении рабочего процесса. Если указать один из этих командлетов в модуле runbook, соответствующее действие запускается в Windows Workflow Foundation.
Если у командлета нет соответствующего действия, рабочий процесс Windows PowerShell автоматически запускает командлет в действии InlineScript. Некоторые командлеты исключаются и не могут использоваться в рабочем процессе, если они явно не включены в блок InlineScript. Дополнительные сведения см. в статье Использование действий в рабочих процессах сценариев.
Действия рабочих процессов совместно используют набор общих параметров для настройки их работы. См. раздел about_WorkflowCommonParameters.
Позиционные параметры
Позиционные параметры нельзя использовать с действиями и командлетами в рабочем процессе. Поэтому необходимо использовать имена параметров. Рассмотрим следующий код, получающий список всех запущенных служб:
Десериализованные объекты
При попытке выполнить этот код в рабочем процессе вы получите сообщение об ошибке Method invocation is not supported in a Windows PowerShell Workflow.
Один вариант — перенести эти две строки кода в блок InlineScript. В этом случае Service представляет объект службы в блоке.
Использование InlineScript
Действие InlineScript пригодится, если вам нужно выполнить одну или несколько команд, используя не рабочий процесс PowerShell, а традиционный скрипт PowerShell. Пока команды в рабочем процессе отправляются в Windows Workflow Foundation для обработки, команды в блоке InlineScript обрабатываются при помощи Windows PowerShell.
InlineScript использует описанный ниже синтаксис.
Для получения выходных данных из InlineScript можно присвоить им переменную. Код в приведенном ниже примере останавливает службу и выдает ее имя.
В то время как выполнение действий InlineScript может быть критически важно в некоторых рабочих процессах, они не поддерживают конструкции рабочих процессов. Их следует использовать только тогда, когда это необходимо по следующим причинам:
Дополнительные сведения об использовании InlineScript см. в статьях Выполнение команд Windows PowerShell в рабочем процессе и about_InlineScript.
Использование параллельной обработки
Одним из преимуществ рабочих процессов Windows PowerShell является возможность выполнять набор команд параллельно, а не последовательно, как это делается в стандартном скрипте.
Рассмотрим, например, приведенные ниже команды PowerShell, которые копируют несколько файлов в определенный узел сети. Команды выполняются последовательно, поэтому следующий файл не копируется, пока не закончится копирование предыдущего.
Приведенный ниже рабочий процесс выполняет те же команды параллельно, так что все файлы копируются одновременно. При этом сообщение о завершении отображается только после того, как все файлы будут скопированы.
Приведенный ниже пример аналогичен предыдущему: файлы копируются параллельно. В данном случае после копирования каждого файла отображается отдельное сообщение. При этом сообщение об окончательном завершении отображается только после того, как все файлы будут скопированы.
Использование контрольных точек в рабочем процессе
Контрольная точка представляет собой моментальный снимок текущего состояния рабочего процесса, который включает текущие значения переменных и любые выходные данные, созданные для этой точки. Если рабочий процесс завершается ошибкой или приостанавливается, при следующем запуске он будет выполняться не с начала, а с последней контрольной точки.
Чтобы модуль runbook в конечном итоге был выполнен, необходимо добавлять контрольные точки с интервалами не более трех часов. Если новая контрольная точка добавляется при каждом запуске, а модуль runbook исключается по истечении трех часов из-за ошибки, его выполнение будет возобновляться бесконечно.
В приведенном ниже примере действие Activity2 вызывает остановку рабочего процесса, в связи с чем выдается исключение. После возобновления рабочий процесс начинается с действия Activity2, поскольку оно идет сразу за последней установленной контрольной точкой.
Устанавливайте контрольные точки в рабочем процессе после действий, которые могут выдавать исключения и которые не должны повторяться при возобновлении рабочего процесса. Допустим, рабочий процесс создает виртуальную машину. Контрольную точку можно создать как до, так и после команд создания виртуальной машины. Если создать виртуальную машину не удастся, то при повторном запуске рабочего процесса команды повторятся. Если рабочий процесс завершится неудачей после создания виртуальной машины, то при возобновлении она не будет создаваться заново.
Код в приведенном ниже примере копирует несколько файлов в определенный узел сети и устанавливает контрольную точку после каждого файла. Если подключение к этому узлу утеряно, рабочий процесс завершатся ошибкой. При повторном запуске он возобновляется с последней контрольной точки. Пропускаются только те файлы, которые уже были скопированы.
Приведенный ниже код показывает, как это сделать в модулях runbook рабочих процессов PowerShell.
Для неграфических модулей runbook PowerShell Add-AzAccount и Add-AzureRMAccount являются псевдонимами для Connect-AzAccount. Вы можете использовать эти командлеты или обновить модули в учетной записи службы автоматизации до последних версий. Обновление модулей может потребоваться, даже если учетная запись службы автоматизации только что создана. Использовать эти командлеты необязательно, если вы проходите проверку подлинности с помощью учетной записи запуска от имени, настроенной с помощью субъекта-службы.
Дополнительные сведения о контрольных точках см. в статье Добавление контрольных точек в рабочий процесс сценария.




