Перейти к основному содержимому

Экосистема автоматизации на PowerShell

Разработчику Архитектору

Play ITЗагрузка интерактивного демо…


Экосистема автоматизации на PowerShell

Что такое Power Platform

Power Platform представляет собой набор инструментов для создания бизнес-приложений, аналитических дашбордов и автоматизации процессов без глубокого знания традиционного программирования. Эта платформа объединяет возможности визуальной разработки, работы с данными и искусственного интеллекта.

Ключевыми компонентами экосистемы являются:

  • Power Apps,
  • Power Automate,
  • Power BI,
  • Power Virtual Agents.

PowerShell занимает особое место в этой экосистеме как инструмент скриптовой автоматизации. В отличие от визуальных конструкторов Power Platform, PowerShell предоставляет программный доступ к управлению ресурсами, конфигурацией систем и интеграции различных сервисов через единый интерфейс командной строки. Скрипты на PowerShell позволяют создавать сложные автоматизированные процессы, которые выходят за рамки возможностей стандартных конструкторов потоков данных.

Связь между PowerShell и Power Platform проявляется в нескольких аспектах. Скрипты PowerShell могут вызывать функции Power Platform через REST API, управлять ресурсами облачных сред, где развернуты решения Power Platform, и автоматизировать процессы развертывания и обновления приложений. Это создает единую среду управления, где низкоуровневая автоматизация сочетается с высокоуровневыми бизнес-процессами.


PowerShell

Кроссплатформенная природа PowerShell

PowerShell работает в операционных системах Windows, Linux и macOS, обеспечивая единый подход к автоматизации в гетерогенной среде. Это означает, что администраторы и разработчики могут использовать одни и те же команды, скрипты и подходы к решению задач независимо от используемой операционной системы.

В среде Windows PowerShell исторически развивался как расширение командной строки cmd.exe, предоставляя объектно-ориентированный интерфейс для управления системой. В современных версиях Windows 10 и Windows 11 PowerShell Core (версии 6.x и выше) является стандартом де-факто для автоматизации задач.

Переход на кроссплатформенность произошел с выпуском PowerShell Core, который базируется на .NET Core. Это позволило запустить PowerShell на Linux и macOS, сохранив при этом совместимость синтаксиса и функциональности. Теперь скрипт, написанный для Windows, может быть выполнен на Linux или macOS с минимальными изменениями или без них.

Единый подход к автоматизации в гетерогенной среде позволяет организациям стандартизировать процессы управления инфраструктурой. Администраторы пишут один скрипт для развертывания приложения, который затем выполняется на серверах Windows, Linux и macOS. Это снижает затраты на обучение, упрощает поддержку кодовой базы и повышает надежность автоматизированных процессов.


Установка PowerShell

Процесс установки PowerShell различается в зависимости от операционной системы. На современных версиях Windows 10 и Windows 11 PowerShell уже предустановлен по умолчанию.

Пользователи могут проверить версию, открыв терминал и выполнив:

$PSVersionTable.PSVersion # в любой сессии PowerShell
pwsh -Version # только для PowerShell 7+ (кроссплатформенная сборка)

Для установки последней версии PowerShell на Windows используйте официальное руководство по установке (winget, MSI, Store, ZIP). Процесс установки включает в себя несколько шагов:

  • скачивание инсталлятора,
  • выполнение файла с правами администратора,
  • подтверждение установки.

После завершения установки PowerShell доступен из командной строки и интегрируется с другими инструментами Windows.

На Linux установка PowerShell осуществляется через репозитории пакетов.

Для дистрибутивов на основе Debian (Ubuntu, Debian, Kali) используется команда apt, для Red Hat Enterprise Linux и CentOS — yum или dnf. Процесс установки включает добавление репозитория Microsoft, обновление списка пакетов и установку пакета PowerShell.

На macOS установка возможна через менеджер пакетов Homebrew. Команда brew install --cask powershell автоматически загружает и устанавливает последнюю версию PowerShell. Также доступна возможность ручной установки через официальные пакеты .pkg с сайта Microsoft.

brew install --cask powershell

Обновление выполняют через установщик с страницы релизов PowerShell, winget upgrade Microsoft.PowerShell (Windows) или пакетный менеджер дистрибутива (Linux). Отдельной встроенной команды Update-PowerShell нет.


Запуск PowerShell

Запуск PowerShell возможен несколькими способами в зависимости от потребностей пользователя и операционной системы. На Windows можно открыть PowerShell через меню Пуск, поиск или через контекстное меню папки. Также доступен запуск через командную строку cmd.exe с помощью команды powershell.

В Linux и macOS PowerShell запускается из терминала с помощью команды pwsh. Эта команда запускает оболочку PowerShell Core, которая отличается от классического Windows PowerShell. Пользователи могут настроить автоматический запуск PowerShell при открытии терминала, изменив файл конфигурации оболочки.

Альтернативные способы запуска включают использование планировщика задач Windows для выполнения скриптов по расписанию, вызов PowerShell из других скриптов или приложений, и использование PowerShell в режиме интерактивной консоли для тестирования команд.

При запуске PowerShell загружает профиль пользователя, содержащий настройки окружения, алиасы и функции. Этот профиль хранится в файле Microsoft.PowerShell_profile.ps1 в директории пользователя. Изменение профиля позволяет персонализировать опыт работы с PowerShell и добавлять полезные функции.


Windows PowerShell ISE — среда разработки

Назначение и возможности

Windows PowerShell Integrated Scripting Environment (ISE) представляет собой графическую среду разработки, предназначенную для создания, отладки и выполнения скриптов PowerShell. Эта программа обеспечивает удобство работы с кодом благодаря визуальному интерфейсу, поддержке подсветки синтаксиса, автозаполнению и встроенным средствам отладки.

Основное назначение ISE заключается в упрощении процесса написания скриптов для пользователей, которые не хотят работать исключительно с командной строкой. Интерфейс разделен на несколько панелей — редактор кода, консоль вывода, панель навигации по скрипту и окно параметров. Такая структура позволяет одновременно просматривать код, выполнять его и анализировать результаты.

Подсветка синтаксиса в ISE помогает идентифицировать ошибки на этапе написания кода. Различные элементы синтаксиса окрашиваются в разные цвета — ключевые слова — одним цветом, строки — другим, комментарии — третьим. Это упрощает чтение кода и снижает вероятность ошибок.

Автозаполнение команд и параметров ускоряет процесс написания скриптов. При вводе части имени команды ISE предлагает полный список возможных вариантов, сокращая время на ввод и снижая количество опечаток. Система также подсказывает параметры команд и их значения.

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


Архитектура и работа

Windows PowerShell ISE работает как отдельное приложение, которое взаимодействует с движком PowerShell через COM-интерфейсы. Приложение предоставляет графический интерфейс для взаимодействия с движком, обрабатывая ввод пользователя, отображая вывод и управляя выполнением скриптов.

Архитектура ISE включает несколько основных компонентов: редактор кода, который обрабатывает ввод текста и обеспечивает подсветку синтаксиса; консоль, которая отображает результаты выполнения команд и принимает ввод; панель навигации, показывающая структуру текущего скрипта; и панель свойств, позволяющая изменять настройки скрипта.

При выполнении скрипта ISE передает код движку PowerShell, который компилирует и исполняет его. Результаты выполнения выводятся в консоль, где пользователь может видеть сообщения об ошибках, вывод команд и значения переменных. ISE также поддерживает выполнение скриптов в фоновом режиме, позволяя продолжать работу с другими задачами.

Интеграция с другими компонентами Windows позволяет ISE использовать системные ресурсы, управлять правами доступа и взаимодействовать с другими приложениями. Это делает ISE мощным инструментом для автоматизации задач в среде Windows.


Ограничения и современные альтернативы

Несмотря на удобство использования, Windows PowerShell ISE имеет ряд ограничений. Программа не поддерживается в новых версиях Windows 11 и не получает обновлений функций. Microsoft рекомендует использовать Visual Studio Code с расширением PowerShell как основную среду разработки.

Visual Studio Code предлагает более современный интерфейс, лучшую поддержку кроссплатформенности, расширенные возможности отладки и интеграцию с системами контроля версий. Расширение PowerShell для VS Code обеспечивает все функции ISE и добавляет новые возможности, такие как поддержка Git, интеграция с CI/CD и улучшенная производительность.

Для пользователей, которым необходим графический интерфейс для написания скриптов, существуют альтернативы вроде Notepad++ с плагинами для PowerShell или специализированные IDE для скриптов. Однако переход на VS Code остается наиболее рекомендуемым решением для современной разработки на PowerShell.


Командлеты (Cmdlets)

Определение и принципы работы

Командлет (cmdlet) — это узкоспециализированная команда в PowerShell, которая выполняет одну конкретную задачу. Название "cmdlet" образовано от слов "command" и "tool", что отражает суть этих элементов: они являются инструментами для выполнения команд в системе.

Принцип работы командлетов основан на объектно-ориентированном подходе. Каждый командлет принимает входные данные, обрабатывает их и выводит выходные объекты. Эти объекты могут передаваться дальше в конвейере PowerShell, где другие командлеты продолжают обработку. Такой подход позволяет создавать сложные цепочки обработки данных без необходимости промежуточного сохранения результатов.

Каждый командлет следует определенной структуре именования, состоящей из глагола и существительного. Глагол описывает действие, которое выполняет командлет, а существительное указывает на объект, над которым выполняется действие. Например, командлет Get-Process получает информацию о процессах, а Stop-Service останавливает службу.

Глаголы в PowerShell строго регламентированы и определяют тип операции. Существуют стандартные наборы глаголов для разных типов действий — получение данных (Get-), создание объектов (New-), удаление (Remove-), изменение (Set-), преобразование (ConvertTo-), проверка (Test-) и другие. Фильтрация в конвейере — командлет Where-Object, а не отдельный глагол Where-. Эта система гарантирует предсказуемость и единообразие работы с командлетами.


Основные категории командлетов

Категории командлетов определяются их функциональным назначением и областью применения. Системные командлеты управляют операционной системой, службами, процессами и файлами. Примеры включают Get-Service, Start-Process, Copy-Item и Remove-Item.

Сетевые командлеты обеспечивают управление сетевыми ресурсами, настройками подключения и мониторингом трафика. К ним относятся Test-Connection, Resolve-DnsName, New-NetFirewallRule и Get-NetAdapter. Эти команды позволяют администраторам контролировать сетевую инфраструктуру и решать проблемы подключений.

Административные командлеты предназначены для управления учетными записями, группами, политиками безопасности и другими аспектами администрирования. Примеры — New-LocalUser, Add-GroupMember, Get-EventLog и Set-ExecutionPolicy.

Командлеты для работы с файловой системой предоставляют возможности для манипуляции файлами и директориями. Сюда входят Get-ChildItem, Move-Item, Rename-Item и Split-Path. Эти команды работают с объектами файловой системы, а не просто с текстовыми путями.


Конвейер и передача данных

Конвейер (|) передаёт объекты, а не текст, между командлетами. Краткий пример:

Get-Process | Where-Object CPU -gt 10 | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU

Теория потоков вывода и разбор конвейера — в основах языка и объектной модели.


Командлеты Power Platform

Командлеты Power Apps

Командлеты Power Apps позволяют управлять приложениями, созданными в среде Power Apps, непосредственно из PowerShell. Эти команды дают доступ к созданию, модификации и удалению приложений, работе с таблицами данных и управлению правами доступа.

Основные возможности включают получение списка приложений в организации, создание новых приложений на основе шаблонов, изменение настроек приложений и управление разрешениями пользователей. Командлеты работают через REST API Power Apps, обеспечивая программный доступ к функционалу платформы.

Управление Power Apps из PowerShell обычно идёт через Microsoft Graph или административные модули Power Platform (имена команд зависят от версии API). Минимальный рабочий шаблон:

# Требуется модуль Microsoft.Graph (Install-Module Microsoft.Graph)
Connect-MgGraph -Scopes "Application.Read.All"
Get-MgServicePrincipal -Filter "startswith(displayName,'Power Apps')" |
Select-Object DisplayName, AppId

Конкретные операции с canvas-приложениями и средами выполняются через соответствующие Graph-эндпоинты или cmdlets модуля администрирования — их набор меняется, поэтому в скриптах сверяйтесь с Get-Command -Module *Graph*.

Get-Command -Module *Graph*

Управление данными в Power Apps через PowerShell позволяет автоматизировать задачи по синхронизации данных, обновлению таблиц и контролю целостности информации. Командлеты поддерживают работу с различными источниками данных, включая SharePoint, SQL Server и Azure SQL Database.


Командлеты Microsoft 365

Командлеты Microsoft 365 обеспечивают управление всеми сервисами экосистемы Microsoft 365, включая Exchange Online, SharePoint Online, OneDrive for Business и Teams. Эти команды позволяют администраторам автоматизировать рутинные задачи, такие как создание учетных записей, управление почтовыми ящиками, настройка политик безопасности и мониторинг активности пользователей.

Основные функции включают управление пользователями и группами, настройку правил маршрутизации почты, управление документами и библиотеками, контроль доступа к ресурсам и генерацию отчетов. Командлеты работают через модуль Microsoft.Graph, который предоставляет унифицированный интерфейс для доступа ко всем сервисам Microsoft 365.

Пример чтения пользователей через Microsoft Graph:

Connect-MgGraph -Scopes "User.Read.All"
Get-MgUser -Top 5 | Select-Object DisplayName, UserPrincipalName

Создание учётных записей — New-MgUser с параметром PasswordProfile (см. документацию модуля). Почта в Exchange Online настраивается отдельно (лицензия, политики); для рассылок используют Graph или модуль ExchangeOnlineManagement, а не Send-MailMessage к произвольному SMTP.

Управление лицензиями и политиками безопасности через PowerShell позволяет централизованно контролировать доступ к ресурсам и обеспечивать соответствие требованиям корпоративной политики. Командлеты поддерживают массовые операции, что особенно полезно при управлении большими организациями.


Командлеты Dynamics 365

Командлеты Dynamics 365 предоставляют программный доступ к управлению CRM и ERP системами Microsoft. Эти команды позволяют автоматизировать процессы продаж, обслуживания клиентов, управления запасами и финансового учета.

Основные возможности включают управление записями в базе данных, создание отчетов, настройку рабочих процессов, интеграцию с внешними системами и автоматизацию бизнес-процессов. Командлеты работают через API Dynamics 365, обеспечивая прямой доступ к данным и функциям системы.

Для Dynamics 365 используют модули вроде Microsoft.Xrm.Data.PowerShell или прямые вызовы Dataverse Web API через Invoke-RestMethod после получения токена OAuth. Имена команд зависят от выбранного модуля; универсального набора Get-CrmRecords во всех средах нет — перед автоматизацией проверьте Get-Command -Module *Xrm* в своей организации.

Get-Command -Module *Xrm*

Автоматизация процессов в Dynamics 365 через PowerShell позволяет сократить время на рутинные задачи, повысить точность данных и обеспечить соблюдение бизнес-правил. Командлеты поддерживают работу с различными сущностями системы, включая контакты, лиды, сделки и проекты.


Командлеты Microsoft Azure

Управление облачными ресурсами

Командлеты Microsoft Azure позволяют управлять всеми аспектами облачной инфраструктуры Azure из одной консоли. Эти команды обеспечивают полный контроль над виртуальными машинами, базами данных, сетями, хранилищами и другими ресурсами.

Основные возможности включают создание и удаление ресурсов, настройку конфигураций, управление доступом, мониторинг производительности и автоматизацию развертывания. Командлеты работают через модуль Az, который предоставляет унифицированный интерфейс для работы с Azure.

Пример использования командлетов Azure:

Connect-AzAccount
New-AzResourceGroup -Name "MyResourceGroup" -Location "East US"
New-AzVm -ResourceGroupName "MyResourceGroup" -Name "MyVM" -Image "Win2019Datacenter" -Size "Standard_DS1_v2"

Этот скрипт создает новую группу ресурсов и виртуальную машину в Azure East US.

Управление идентификацией и доступом через PowerShell позволяет централизованно контролировать права доступа к ресурсам Azure. Командлеты поддерживают работу с ролями, группами и политиками безопасности, обеспечивая соответствие требованиям информационной безопасности.


Работа с контейнерами и микросервисами

Командлеты Azure Container Instances и Azure Kubernetes Service предоставляют возможности для развертывания и управления контейнеризированными приложениями. Эти команды позволяют создавать кластеры Kubernetes, разворачивать контейнеры, масштабировать приложения и мониторить их состояние.

Пример развёртывания в AKS (модуль Az.Aks):

Connect-AzAccount
New-AzResourceGroup -Name "MyResourceGroup" -Location "East US"
New-AzAksCluster -ResourceGroupName "MyResourceGroup" -Name "MyAKSCluster" -NodeCount 3 -Location "East US"
Import-AzAksCredential -ResourceGroupName "MyResourceGroup" -Name "MyAKSCluster"
kubectl apply -f deployment.yaml

Последняя строка вызывает kubectl — внешнюю утилиту; PowerShell лишь подготавливает учётные данные кластера.

Масштабирование приложений через PowerShell позволяет автоматически адаптировать ресурсы к изменяющейся нагрузке. Командлеты поддерживают горизонтальное и вертикальное масштабирование, а также настройку политик автоскейлинга.


Мониторинг и логирование

Командлеты Azure Monitor и Log Analytics обеспечивают сбор, анализ и визуализацию данных о работе облачных ресурсов. Эти команды позволяют создавать дашборды, настраивать оповещения, анализировать логи и выявлять аномалии в работе системы.

Пример использования командлетов для мониторинга:

Get-AzMetric -ResourceId "/subscriptions/xxx/resourceGroups/MyRG/providers/Microsoft.Compute/virtualMachines/MyVM" -MetricName "Percentage CPU" -TimeGrain 00:05:00

Этот скрипт получает метрики использования процессора для указанной виртуальной машины за последние 5 минут.

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


Модульность и сторонние модули

Архитектура модулей

Модульность PowerShell основана на разделении функциональности на независимые компоненты, которые могут быть установлены и использованы отдельно. Каждый модуль содержит набор командлетов, функций, переменных и других элементов, необходимых для выполнения конкретной задачи.

Структура модуля включает файл манифеста (.psd1), основной скрипт (.psm1) и дополнительные файлы ресурсов. Манифест определяет метаинформацию о модуле — имя, версию, автора, требуемые зависимости и экспортируемые элементы. Основной скрипт содержит реализацию командлетов и функций.

Система загрузки модулей автоматически обнаруживает и импортирует модули при необходимости. PowerShell ищет модули в определенных директориях: текущая рабочая директория, директория пользователя и глобальная директория. Это позволяет легко распространять и устанавливать модули без сложной настройки.


Модули от Microsoft

Microsoft предоставляет широкий спектр модулей для управления различными сервисами и технологиями. Ключевые модули включают Azure для работы с облаком, ExchangeOnlineManagement для управления Exchange, Microsoft.Graph для доступа к Graph API, SQLServer для работы с базами данных SQL Server и ActiveDirectory для управления доменом.

Модуль Azure заменяет старые модули AzureRM и предоставляет единый интерфейс для работы со всеми сервисами Azure. Он поддерживает работу с подписками, ресурсами, политиками и управлением доступом.

Модуль Microsoft.Graph обеспечивает доступ ко всем сервисам Microsoft через единый API. Он включает команды для управления пользователями, группами, устройствами, почтой и другими ресурсами.

Модуль SQLServer предоставляет команды для управления базами данных SQL Server, включая создание баз данных, управление пользователями, выполнение запросов и настройку параметров.


Сторонние модули

Сторонние поставщики создают модули для расширения возможностей PowerShell. Популярные модули включают Pester для тестирования, Chocolatey для управления пакетами, AWS.Tools.* для работы с Amazon Web Services, VMware.PowerCLI для управления VMware и GoogleCloudSDK для интеграции с Google Cloud.

Модуль Pester позволяет писать и выполнять тесты для скриптов PowerShell. Он обеспечивает покрытие кода, проверку корректности работы и автоматизацию регрессионного тестирования.

Модули для работы с AWS, такими как AWS.Tools.EC2 и AWS.Tools.S3, предоставляют команды для управления ресурсами Amazon Web Services. Они позволяют создавать и удалять EC2-инстансы, управлять S3-бакетами и настраивать политики безопасности.

Модуль VMware.PowerCLI дает доступ к управлению виртуальными машинами, кластерами и сетями VMware vSphere. Он позволяет автоматизировать развертывание виртуальных машин, управление резервным копированием и мониторинг производительности.


Интеграция с CI/CD

Автоматизация развертывания

Интеграция PowerShell с системами непрерывной интеграции и доставки (CI/CD) позволяет автоматизировать процессы сборки, тестирования и развертывания приложений. Скрипты PowerShell используются для подготовки среды, выполнения тестов, развертывания артефактов и пост-развертывочных проверок.

В системах CI/CD, таких как Azure DevOps, Jenkins и GitHub Actions, PowerShell выступает как исполнитель скриптов, которые выполняют необходимые действия. Скрипты могут быть вызваны из пайплайнов как отдельные этапы или как часть комплексных процессов.

Пример интеграции с Azure DevOps:

Код ITЗагрузка примера кода…

Этот пайплайн выполняет сборку проекта, тестирование и развертывание с помощью скрипта deploy.ps1.


Управляемость и безопасность

Использование PowerShell в CI/CD требует внимания к вопросам безопасности и управляемости. Скрипты должны быть защищены от несанкционированного доступа, а их выполнение должно контролироваться системами аудита.

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

Мониторинг выполнения скриптов и логирование результатов помогают отслеживать успешность развертываний и оперативно реагировать на проблемы. Интеграция с системами мониторинга позволяет получать уведомления о сбоях и аномалиях.


Desired State Configuration (DSC)

Принципы работы DSC

Desired State Configuration (DSC) — это технология управления конфигурациями, которая позволяет описывать желаемое состояние системы и обеспечивать его поддержание. DSC работает по принципу декларативного подхода — администратор описывает, какой должна быть система, а DSC самостоятельно приводит её к этому состоянию.

Основной принцип DSC заключается в постоянном контроле состояния системы. Если система отклоняется от заданного состояния, DSC автоматически корректирует её, возвращая к целевой конфигурации. Это обеспечивает стабильность и предсказуемость работы инфраструктуры.

DSC использует концепцию ресурсов — блоков кода, которые управляют конкретными аспектами системы. Каждое ресурс соответствует определенной задаче — установке программного обеспечения, настройке реестра, управлению службами или конфигурации сети.


Структура конфигураций

Конфигурации DSC описываются в формате MOF (Managed Object Format) или в виде скриптов PowerShell. Скрипты содержат блоки configuration, которые определяют имя конфигурации и её параметры. Внутри блока указываются ресурсы и их параметры.

Пример конфигурации DSC:

Код ITЗагрузка примера кода…

Эта конфигурация устанавливает веб-сервер, создает директорию для контента и запускает службу IIS.

После определения конфигурации она компилируется в формат MOF, который применяется к целевым узлам. DSC проверяет состояние узлов и вносит необходимые изменения для приведения их к желаемому состоянию.


Управление и мониторинг

Управление конфигурациями DSC осуществляется через команды Start-DscConfiguration, Get-DscConfiguration и Test-DscConfiguration. Эти команды позволяют применять конфигурации, проверять текущее состояние и тестировать соответствие желаемому состоянию.

Мониторинг выполнения DSC включает просмотр логов, анализ отчетов о применении конфигураций и отслеживание изменений в системе. DSC генерирует подробные отчеты о том, какие изменения были внесены и почему.

Интеграция DSC с системами управления конфигурациями позволяет централизованно управлять конфигурациями множества узлов. Администраторы могут применять одинаковые конфигурации ко всем серверам, обеспечивая единообразие и снижая риск ошибок.


Azure Automation

Azure Automation — облачная платформа для runbook (скриптов PowerShell/Python), расписаний и inventory без собственного сервера планировщика. Два режима:

РежимГде выполняетсяКогда
Облачный sandboxAzureAzure API, Graph, ресурсы в подписке
Hybrid Runbook WorkerВаш Windows/Linux серверЛокальные файлы, AD on-prem, SQL в LAN

Компоненты

  • Automation Account — контейнер runbook, credentials, variables;
  • Runbook.ps1 в редакторе портала или импорт из Git;
  • Schedule — триггер по времени (аналог планировщика);
  • Hybrid Worker — агент на машине в вашей сети выполняет runbook "рядом с данными";
  • Log Analytics — журналы и алерты (опционально).

Секреты в runbook

Пароли и API-ключи — в Credential / Variable (encrypted) automation account или через Managed Identity к Key Vault. Подробнее — Секреты и безопасная автоматизация.

# Внутри runbook (упрощённо)
$cred = Get-AutomationPSCredential -Name 'OnPremSvc'
Invoke-Command -ComputerName SRV-01 -Credential $cred -ScriptBlock { ... }

Версии PowerShell

На момент написания многие runbook в Azure Automation ориентированы на Windows PowerShell 5.1. Для новых локальных скриптов предпочтителен pwsh 7; перед переносом runbook в облако проверьте совместимость модулей на Microsoft Learn — Azure Automation.

Когда Azure Automation, когда локальный планировщик

КритерийЛокальный планировщик / Триггеры — расписание и наблюдателиAzure Automation
Только on-prem, без Azureизбыточен
Уже есть подписка Azure, центральные runbook
Нужен audit и RBAC в порталеограниченно
Hybrid — скрипт на сервере в DMZ✓ + Worker✓ + Worker

Облачная автоматизация ресурсов (VM, storage) — модули Az; общая картина DevOps — 8.04.


Практический слой: как не утонуть в экосистеме

Экосистема PowerShell кажется огромной, поэтому на старте полезно держать фокус на трех уровнях:

  • "база" — встроенные командлеты (Get-*, Set-*, Test-*) и провайдеры;
  • "рабочие модули": Az, Microsoft.Graph, Pester, PSReadLine;
  • "проектные модули": только под вашу инфраструктуру.

Мини-правило выбора — сначала проверьте, можно ли решить задачу штатными командами, затем официальным модулем вендора, и только потом внешними пакетами.

Маршрут по теме:

Содержание