Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Azure Logic Apps (стандартная версия)
Чтобы выполнять пользовательские задачи интеграции в рамках рабочего процесса уровня "Стандартный" в Azure Logic Apps, вы можете напрямую добавлять и запускать код PowerShell из рабочего процесса. Для этой задачи используйте действие Встроенный код с именем Execute PowerShell Code. Это действие возвращает результаты кода PowerShell, чтобы использовать эти выходные данные в последующих действиях рабочего процесса.
Эта возможность обеспечивает следующие преимущества:
Создайте собственные скрипты в конструкторе рабочих процессов, чтобы решить сложные проблемы интеграции. Другие планы обслуживания не нужны.
Это преимущество снижает сложность и затраты, так как вы можете управлять дополнительными службами и оптимизировать разработку рабочих процессов.
Создайте выделенный файл кода, который предоставляет персонализированное пространство сценариев в рабочем процессе.
Интегрируйтесь с PowerShell-функциями Функции Azure, предоставляющими мощные функциональные возможности и наследование для выполнения сложных задач.
Разверните скрипты вместе с рабочими процессами.
В этом руководстве показано, как добавить действие в рабочий процесс и добавить код PowerShell, который требуется запустить.
Предварительные требования
Учетная запись и подписка Azure. Получите бесплатную учетную запись Azure.
Ресурс стандартного логического приложения с рабочим процессом, в который вы хотите добавить свой скрипт PowerShell.
Рабочий процесс уже должен начинаться с триггера. Для сценария можно использовать любой триггер, но в качестве примера в этом руководстве используется триггер запроса с именем "При получении HTTP-запроса ", а также действие "Ответ ". Рабочий процесс запускается, когда другое приложение или рабочий процесс отправляет запрос на URL-адрес конечной точки триггера. Пример скрипта возвращает результаты выполнения кода в виде выходных данных, которые можно использовать в последующих действиях.
Если у вас нет ресурса приложения логики и рабочего процесса, создайте их, выполнив следующие действия.
Рекомендации
Портал Azure сохраняет скрипт как файл сценария PowerShell (.ps1) в той же папке, что и файл workflow.json, в котором хранится JSON-определение вашего рабочего процесса, и развертывает этот файл в ресурсе приложения логики вместе с определением рабочего процесса.
Файл .ps1 позволяет сократить количество шаблонного кода и сосредоточиться исключительно на написании кода PowerShell. При переименовании действия файл также переименован, но не наоборот. При непосредственном переименовании файла переименованная версия перезаписывает предыдущую версию. Если имя действия и имена файлов не совпадают, действие не сможет найти файл и пытается создать пустой файл.
Сценарий является локальным для рабочего процесса. Чтобы использовать тот же скрипт в других рабочих процессах, просмотрите файл скрипта в консоли Kudu, а затем скопируйте скрипт для повторного использования в других рабочих процессах.
Ограничения
| Имя | Лимит | Примечания. |
|---|---|---|
| Длительность выполнения скрипта | 10 минут | Если у вас есть сценарии, которым требуется больше времени, воспользуйтесь функцией отправки отзыва о продукте, чтобы предоставить более подробную информацию о ваших потребностях. |
| Размер выходных данных | 100 МБ | Размер выходных данных зависит от предельного размера выходных данных для действий, что обычно составляет 100 МБ. |
Обновление версии PowerShell
Вы можете изменить версию PowerShell в ресурсе приложения логики, изменив параметры приложения. Однако перед обновлением приложения ознакомьтесь со следующими рекомендациями.
Обновление версии может привести к критическим изменениям в логическом приложении Standard, которое использует среду выполнения, размещённую как расширение в среде выполнения Функции Azure. Перед обновлением протестируйте свои скрипты на совместимость с целевой версией PowerShell и ознакомьтесь с вики-страницей обработчика PowerShell для Функции Azure с рекомендациями по миграции.
Убедитесь, что приложение логики использует последнюю версию среды выполнения для среды выполнения Функций Azure в Azure, которая является версией 4.x. Дополнительные сведения см. в разделе "Просмотр текущей версии среды выполнения".
Примечание.
По умолчанию, если вы не указываете версию PowerShell, Azure Logic Apps использует ту же версию по умолчанию, что и Функции Azure. Дополнительные сведения о доступных версиях см. в руководстве разработчика по Функции Azure PowerShell.
В зависимости от того, где требуется обновить версию PowerShell, выполните следующие действия:
На портале Azure откройте ресурс стандартного логического приложения.
На боковой панели ресурса в разделе "Параметры" выберите переменные среды.
На вкладке "Параметры приложения " нажмите кнопку "+ Добавить".
На панели параметров "Добавить и изменить приложение " добавьте следующий новый параметр приложения:
Параметр Ценность Описание Имя LOGIC_APPS_POWERSHELL_VERSIONИмя параметра приложения. Ценность < PowerShell-version> Поддерживаемая версия для PowerShell. По завершении нажмите кнопку "Применить". Когда появится предупреждение о перезапуске, нажмите кнопку "Продолжить".
Приложение логики перезапускается с обновленной версией.
Добавить действие «Выполнить код PowerShell»
На портале Azure откройте ресурс стандартного логического приложения.
На боковой панели ресурсов в разделе "Рабочие процессы" выберите "Рабочие процессы" и выберите пустой рабочий процесс.
На боковой панели рабочего процесса в разделе "Сервис" выберите конструктор, чтобы открыть рабочий процесс.
Добавьте действие "Встроенные операции кода " с именем Execute PowerShell Code в рабочий процесс, выполнив общие действия, чтобы добавить действие.
После открытия области сведений о действии на вкладке "Параметры " в поле "Файл кода" обновите предварительно заполненный пример кода с собственным кодом.
Чтобы получить доступ к данным, поступающим из рабочего процесса, см. раздел Доступ к выходным данным триггера и действий рабочего процесса в скрипте далее в этом руководстве.
Чтобы вернуть результаты скрипта или другие данные в рабочий процесс, см . статью "Возврат данных в рабочий процесс".
В следующем примере показана вкладка "Параметры действия" с примером кода скрипта:
В следующем примере показан пример кода скрипта:
# Use the following cmdlets to retrieve outputs from prior steps. # $triggerOutput = Get-TriggerOutput # $ActionOutput = Get-ActionOutput -ActionName <action-name> $customResponse = [PSCustomObject]@{ Message = "Hello world!" } # Use Write-Debug/Write-Host/Write-Output/ to log messages to Application Insights. # Write-Host/Write-Output/Write-Debug and 'return' won't return an output to the workflow. # Write-Host "Sending to Application Insight logs" # Use Push-WorkflowOutput to push outputs into subsequent actions. Push-WorkflowOutput -Output $customResponseВ следующем примере показан пользовательский пример скрипта:
$action = Get-TriggerOutput $results = "Hello from PowerShell!" Push-WorkflowOutput -Output $resultsПо завершении сохраните рабочий процесс.
После запуска рабочего процесса можно просмотреть выходные данные рабочего процесса в Application Insights, если это включено. Дополнительные сведения см. в разделе "Просмотр выходных данных" в Application Insights.
Получайте доступ к выходным данным триггера рабочего процесса и действия в вашем скрипте
Выходные значения триггера и предыдущих действий возвращаются с помощью пользовательского объекта, имеющего несколько параметров. Чтобы получить доступ к этим выходным данным и убедиться, что вы возвращаете нужное значение, используйте командлеты Get-TriggerOutput, Get-ActionOutput и Push-WorkflowOutput , а также все соответствующие параметры, описанные в следующей таблице, например:
$trigger = Get-TriggerOutput
$statusCode = $trigger.status.ToString();
$action = Get-ActionOutput -ActionName Compose
$actionOutput = $action.outputs['actionOutput'].ToString();
$populatedString = "Send the $statusCode for the trigger status and $actionOutputName."
Push-WorkflowOutput -Output $populatedString
Примечание.
В PowerShell при ссылке на объект, имеющий тип JValue внутри сложного объекта, и вы добавляете этот объект в строку, вы получите исключение формата. Чтобы избежать этой ошибки, используйте ToString().
Выходные данные отклика триггера и действия
В следующей таблице перечислены выходные данные, создаваемые при вызове Get-ActionOutput или Get-TriggerOutput. Возвращаемое значение — это сложный объект PowershellWorkflowOperationResult, который содержит следующие выходные данные.
| Имя | Тип | Описание |
|---|---|---|
| Имя | Строка | Имя триггера или действия |
| Входные данные | JToken | Входные значения, передаваемые в триггер или действие |
| Выходные данные | JToken | Выходные данные выполняемого триггера или действия |
| StartTime | Дата/время | Время начала триггера или действия |
| EndTime | Дата/время | Время окончания триггера или действия |
| ScheduledTime | Дата/время | Запланированное время запуска триггера или действия |
| OriginHistoryName | Строка | Имя истории происхождения для триггеров, использующих splitOn свойство |
| SourceHistoryName | Строка | Имя истории источника для повторно отправленного триггера |
| TrackingId | Строка | Идентификатор отслеживания операций |
| Код | Строка | Код состояния для результата |
| Состояние | Строка | Состояние выполнения триггера или действия, например "Успешно" или "Сбой" |
| Ошибка | JToken | Код ошибки HTTP |
| TrackedProperties | JToken | Все отслеживаемые свойства, которые вы настроили |
Возврат выходных данных в рабочий процесс
Чтобы вернуть все выходные данные в рабочий процесс, необходимо использовать командлетPush-WorkflowOutput.
Пользовательские команды PowerShell
Действие Выполнить код PowerShell содержит следующие пользовательские команды PowerShell (командлеты) для взаимодействия с вашим рабочим процессом и выполнения других операций в нем:
Get-TriggerOutput
Получает выходные данные триггера рабочего процесса.
Синтаксис
Get-TriggerOutput
Параметры
Нет.
Get-ActionOutput
Возвращает выходные данные другого действия в рабочем процессе и возвращает объект с именем PowershellWorkflowOperationResult.
Синтаксис
Get-ActionOutput [ -ActionName <String> ]
Параметры
| Параметр | Тип | Описание |
|---|---|---|
| ActionName | Строка | Имя действия в рабочем процессе с выходными данными, на которые требуется ссылаться. |
Push-WorkflowOutput
Передает результат действия Execute PowerShell Code в ваш рабочий процесс; этот результат может возвращать объекты любого типа. Если возвращаемое значение имеет значение null, командлет выдает ошибку объекта со значением null.
Примечание.
Write-Debug, Write-Host и Write-Output командлеты не возвращают значения в ваш рабочий процесс. Инструкция return также не возвращает значения в ваш рабочий процесс.
Однако с помощью этих командлетов можно записывать сообщения трассировки, которые отображаются в Application Insights.
Дополнительные сведения см. в статье Microsoft.PowerShell.Utility.
Синтаксис
Push-WorkflowOutput [-Output <Object>] [-Clobber]
Параметры
| Параметр | Тип | Описание |
|---|---|---|
| Выходные данные | Меняется | Выходные данные, которые необходимо вернуть в рабочий процесс. Выходные данные могут иметь любой тип. |
| Перезаписать | Меняется | Необязательный параметр коммутатора, который можно использовать для переопределения ранее отправленных выходных данных. |
Проверка подлинности и авторизация доступа с помощью управляемого удостоверения с помощью PowerShell
С помощью управляемой идентичности ресурс приложения логики и рабочий процесс могут проходить аутентификацию и получать доступ к любой службе и ресурсу Azure, поддерживающим аутентификацию Microsoft Entra, без включения учетных данных в код.
В действии Execute PowerShell Code можно пройти проверку подлинности и авторизовать доступ с помощью управляемого удостоверения, чтобы вы могли выполнять действия в других ресурсах Azure, где включен доступ. Например, можно перезапустить виртуальную машину или получить сведения о выполнении другого рабочего процесса приложения логики.
Чтобы использовать управляемую идентификацию внутри действия Execute PowerShell Code, выполните следующие действия:
Настройте управляемое удостоверение в вашем приложении логики и дайте управляемому удостоверению доступ к целевому ресурсу Azure. Подробные инструкции см. в статье "Проверка подлинности доступа и подключений к ресурсам Azure с помощью управляемых удостоверений".
Для целевого ресурса Azure ознакомьтесь со следующими аспектами.
На вкладке «Роль» обычно достаточно роли «Участник».
На странице Добавление назначения роли, на вкладке Участники, для свойства Назначить доступ для убедитесь, что выбрано значение Управляемая идентичность.
Выбрав "Выбрать участников", на панели "Выбор управляемых удостоверений" выберите управляемое удостоверение, которое вы хотите использовать.
В действии Execute PowerShell Code добавьте следующий код в качестве первой инструкции:
Connect-AzAccount -IdentityТеперь вы можете работать с ресурсом Azure с помощью командлетов и модулей.
Просмотр файла скрипта
На портале Azure откройте ресурс стандартного логического приложения.
На боковой панели ресурсов в разделе "Средства разработки" выберите "Дополнительные средства".
На странице "Дополнительные средства" выберите "Перейти", в котором откроется консоль Kudu .
Откройте меню консоли отладки и выберите CMD.
Перейдите в корневое расположение приложения логики: сайт/wwwroot
Перейдите в папку рабочего процесса, содержащую файл с расширением .ps1 по этому пути: site/wwwroot/{workflow-name}
Рядом с именем файла нажмите кнопку "Изменить ", чтобы открыть файл и просмотреть его.
Просмотреть журналы в Application Insights
На портале Azure на боковой панели приложения логики в разделе "Мониторинг" выберите Application Insights (не Insights).
Выберите ссылку на ресурс Application Insights.
На боковой панели ресурсов Application Insights в разделе "Мониторинг" выберите "Журналы".
Создайте запрос для поиска трассировок или ошибок из выполнения рабочего процесса, например:
union traces, errors | project TIMESTAMP, message
Модули
Модули PowerShell являются автономными, повторно используемыми единицами, которые включают различные компоненты, например:
- Командлеты: отдельные команды, которые выполняют определённые задачи.
- Поставщики: разрешить доступ к хранилищам данных, таким как реестр или файловая система, как если бы они были дисками.
- Функции: многоразовые блоки кода, выполняющие определенные действия.
- Переменные: хранение данных для использования в модуле.
- Другие типы ресурсов.
Модуль упорядочивает код PowerShell, что упрощает распространение. Например, можно создать собственные модули для упаковки и сделать связанные функциональные возможности более управляемыми и общими. Действие Execute PowerShell Code позволяет импортировать как общедоступные, так и частные модули PowerShell.
Общедоступные модули
Чтобы найти общедоступные модули, посетите коллекцию PowerShell. Ресурс приложения логики уровня "Стандартный" может поддерживать до 10 общедоступных модулей. Чтобы использовать любой общедоступный модуль, необходимо включить эту возможность, выполнив следующие действия.
На портале Azure на боковой панели приложения логики в разделе "Средства разработки" выберите "Дополнительные средства".
На странице "Дополнительные средства" нажмите кнопку "Перейти".
На панели инструментов Kudu в меню консоли отладки выберите CMD.
Перейдите к корневому уровню приложения логики на C:\home\site\wwwroot с помощью структуры каталога или командной строки.
Откройте файл host.json рабочего процесса и установите для свойства
ManagedDependency.enabledзначениеtrue, которое уже задано по умолчанию."managedDependency": { "enabled": true }Откройте файл с именем requirements.psd1. Добавьте имя и версию модуля, которую требуется использовать с помощью следующего синтаксиса:
MajorNumber.*или точной версии модуля, например:@{ Az = '1.*' SqlServer = '21.1.18147' }
Рекомендации по общедоступным модулям
При использовании управления зависимостями применяются следующие рекомендации.
Чтобы скачивать общедоступные модули, требуется доступ к коллекция PowerShell.
Управляемые зависимости в настоящее время не поддерживают модули, для которых требуется принятие лицензии, будь то в интерактивном режиме или посредством передачи параметра
-AcceptLicenseпри запуске Install-Module.
Частные модули
Вы можете создать собственные частные модули PowerShell. Чтобы создать свой первый модуль PowerShell, см. статью Написание модуля сценария PowerShell.
На портале Azure на боковой панели ресурсов приложения логики в разделе "Средства разработки" выберите "Дополнительные средства".
На странице "Дополнительные средства" нажмите кнопку "Перейти".
На панели инструментов Kudu в меню консоли отладки выберите CMD.
Перейдите к корневому уровню приложения логики на C:\home\site\wwwroot с помощью структуры каталога или командной строки.
Создайте папку с именем Modules.
В папке Modules создайте вложенную папку с тем же именем, что и частный модуль.
В папке частного модуля добавьте частный файл модуля PowerShell с расширением PSM1 . Кроме того, можно включить необязательный файл манифеста PowerShell с расширением PSD1 .
Когда вы закончите, полная структура файлов приложения логики будет выглядеть примерно так, как в следующем примере:
MyLogicApp
-- execute_powershell_script.ps1
-- mytestworkflow.json
Modules
-- MyPrivateModule
--- MyPrivateModule.psd1
--- MyPrivateModule.psm1
-- MyPrivateModule2
--- MyPrivateModule2.psd1
--- MyPrivateModule2.psm1
requirements.psd1
host.json
Ошибки компиляции
В этом выпуске веб-редактор включает ограниченную поддержку IntelliSense, которая по-прежнему находится под улучшением. Все ошибки компиляции обнаруживаются при сохранении рабочего процесса, а среда выполнения Azure Logic Apps компилирует скрипт. Эти ошибки отображаются в журналах ошибок вашего приложения логики через Application Insights.
Ошибки среды выполнения
Действие рабочего процесса не возвращает выходные данные.
Убедитесь, что вы используете командлет Push-WorkflowOutput.
Выполнение действия Кода PowerShell завершается ошибкой: "Термин "{some-text}" не распознается..."
Если вы неправильно ссылаетесь на общедоступный модуль в файле requirements.psd1 или если частный модуль не существует в пути C:\home\site\wwwroot\Modules{имя модуля}, вы получите следующую ошибку:
"Термин "{some-text}" не распознается как имя командлета, функции, файла скрипта или исполняемой программы. Проверьте орфографию имени или если путь включен, проверьте правильность пути и повторите попытку".
Примечание.
По умолчанию модули Az* присутствуют в файле requirements.psd1, но при создании файла они добавляются закомментированными. Если вы ссылаетесь на командлет из модуля, не забудьте раскомментировать модуль.
Выполнение действия PowerShell Code завершается ошибкой: "Не удается привязать аргумент к параметру Output", так как оно равно NULL.
Эта ошибка возникает при попытке отправить пустой объект в рабочий процесс. Убедитесь, что объект Push-WorkflowOutput не является NULL.