Добавление и запуск кода скрипта PowerShell в стандартных рабочих процессах для Azure Logic Apps (предварительная версия)
Область применения: Azure Logic Apps (стандартная версия)
Примечание.
Эта возможность входит в предварительную версию, и на нее распространяются Дополнительные условия использования предварительных версий Microsoft Azure.
Чтобы выполнять пользовательские задачи интеграции в рамках рабочего процесса уровня "Стандартный" в Azure Logic Apps, вы можете напрямую добавлять и запускать код PowerShell из рабочего процесса. Для этой задачи используйте действие встроенного кода с именем Execute PowerShell Code. Это действие возвращает результаты кода PowerShell, чтобы использовать эти выходные данные в последующих действиях рабочего процесса.
Эта возможность обеспечивает следующие преимущества:
Создайте собственные скрипты в конструкторе рабочих процессов, чтобы решить сложные проблемы интеграции. Другие планы обслуживания не нужны.
Это преимущество упрощает разработку рабочих процессов, а также снижает сложность и затраты с помощью управления дополнительными службами.
Создайте выделенный файл кода, который предоставляет персонализированное пространство сценариев в рабочем процессе.
Интеграция с Функции Azure Функциями PowerShell, которая предоставляет мощные функциональные возможности и наследование для расширенного выполнения задач.
Разверните скрипты вместе с рабочими процессами.
В этом руководстве показано, как добавить действие в рабочий процесс и добавить код PowerShell, который требуется запустить.
Необходимые компоненты
Учетная запись и подписка Azure. Если у вас нет ее, вы можете зарегистрироваться для получения бесплатной учетной записи Azure.
Рабочий процесс приложения логики уровня "Стандартный" для добавления скрипта PowerShell. Рабочий процесс уже должен начинаться с триггера. Дополнительные сведения см. в разделе "Создание примеров стандартных рабочих процессов приложения логики".
Для сценария можно использовать любой триггер, но в качестве примера в этом руководстве используется триггер запроса с именем "При получении HTTP-запроса", а также действие "Ответ ". Рабочий процесс запускается, когда другое приложение или рабочий процесс отправляет запрос на URL-адрес конечной точки триггера. Пример скрипта возвращает результаты выполнения кода в виде выходных данных, которые можно использовать в последующих действиях.
Рекомендации
Портал Azure сохраняет скрипт в виде файла скрипта PowerShell (PS1) в той же папке, что и файл workflow.json, который сохраняет определение JSON для рабочего процесса и развертывает файл в ресурсе приложения логики вместе с определением рабочего процесса.
Формат PS1-файла позволяет писать менее "стандартные" и сосредоточиться только на написании кода PowerShell. При переименовании действия файл также переименован, но не наоборот. При непосредственном переименовании файла переименованная версия перезаписывает предыдущую версию. Если имя действия и имена файлов не совпадают, действие не сможет найти файл и пытается создать пустой файл.
Сценарий является локальным для рабочего процесса. Чтобы использовать тот же сценарий в других рабочих процессах, просмотрите файл скрипта в консоли KuduPlus, а затем скопируйте скрипт для повторного использования в других рабочих процессах.
Ограничения
Полное имя | Лимит | Примечания. |
---|---|---|
Длительность выполнения скрипта | 10 минут | Если у вас есть сценарии, требующие длительности, используйте вариант обратной связи продукта, чтобы предоставить дополнительные сведения о ваших потребностях. |
Размер выходных данных | 100 МБ | Размер выходных данных зависит от предельного размера выходных данных для действий, что обычно составляет 100 МБ. |
Добавление действия Execute PowerShell Code
В портал Azure откройте ресурс приложения логики "Стандартный" и рабочий процесс в конструкторе.
В конструкторе выполните следующие общие действия, чтобы добавить действие "Операции встроенного кода" с именем Execute PowerShell Code в рабочий процесс.
После открытия области сведений о действии на вкладке "Параметры " в поле "Файл кода" обновите предварительно заполненный пример кода с собственным кодом.
Сведения о доступе к данным, поступающим из рабочего процесса, см . в разделе "Триггер рабочего процесса Access" и выходные данные действий в скрипте далее в этом руководстве.
Чтобы вернуть результаты скрипта или другие данные в рабочий процесс, см . статью "Возврат данных в рабочий процесс".
В следующем примере показана вкладка "Параметры действия" с примером кода скрипта:
В следующем примере показан пример кода скрипта:
# 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, содержащий следующие выходные данные.
Имя. | Тип | Description |
---|---|---|
Имя | Строка | Имя триггера или действия. |
Входные данные | JToken | Входные значения, передаваемые в триггер или действие. |
Выходные данные | JToken | Выходные данные выполняемого триггера или действия. |
StartTime | Дата/время | Время начала триггера или действия. |
EndTime | Дата/время | Время окончания триггера или действия. |
ScheduledTime | Дата/время | Запланированное время запуска триггера или действия или триггера. |
OriginHistoryName | Строка | Имя журнала источников для триггеров с включенным параметром Split-On . |
SourceHistoryName | Строка | Имя журнала источника для повторного триггера. |
TrackingId | Строка | Идентификатор отслеживания операций. |
Код | Строка | Код состояния для результата. |
Состояние | Строка | Состояние выполнения триггера или действия, например успешно или сбой. |
Ошибка | JToken | Код ошибки HTTP. |
TrackedProperties | JToken | Все отслеживаемые свойства, которые вы настроили. |
Возврат выходных данных в рабочий процесс
Чтобы вернуть все выходные данные в рабочий процесс, необходимо использовать командлет Push-WorkflowOutput.
Пользовательские команды PowerShell
Действие Execute PowerShell Code включает следующие пользовательские команды 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 ознакомьтесь со следующими рекомендациями.
На вкладке "Роль " роль участника обычно достаточно.
На вкладке "Добавление назначения ролей" на вкладке "Члены" для назначения доступа к свойству убедитесь, что выбрано управляемое удостоверение.
Выбрав "Выбрать участников", на панели "Выбор управляемых удостоверений" выберите управляемое удостоверение, которое вы хотите использовать.
В действии Execute PowerShell Code добавьте следующий код в качестве первой инструкции:
Connect-AzAccount -Identity
Теперь вы можете работать с ресурсом Azure с помощью командлетов и модулей.
Просмотр файла скрипта
В портал Azure откройте ресурс приложения логики "Стандартный", имеющий нужный рабочий процесс.
В меню ресурсов приложения логики в разделе "Средства разработки" выберите "Дополнительные средства".
На странице "Дополнительные средства" выберите "Перейти", который открывает консоль KuduPlus.
Откройте меню консоли отладки и выберите CMD.
Перейдите в корневое расположение приложения логики: сайт/wwwroot
Перейдите в папку рабочего процесса, содержащую PS1-файл, по этому пути: site/wwwroot/{workflow-name}
Рядом с именем файла нажмите кнопку "Изменить ", чтобы открыть файл и просмотреть его.
Просмотр журналов Application Insights
В портал Azure в меню ресурсов приложения логики в разделе "Параметры" выберите Application Insights и выберите приложение логики.
В меню Application Insights в разделе "Мониторинг" выберите "Журналы".
Создайте запрос для поиска трассировок или ошибок из выполнения рабочего процесса, например:
union traces, errors | project TIMESTAMP, message
Модули
Модули PowerShell являются автономными, повторно используемыми единицами, которые включают различные компоненты, например:
- Командлеты: отдельные команды, выполняющие определенные задачи.
- Поставщики: разрешить доступ к хранилищам данных, таким как реестр или файловая система, как если бы они были дисками.
- Функции: многоразовые блоки кода, выполняющие определенные действия.
- Переменные: хранение данных для использования в модуле.
- Другие типы ресурсов.
Модуль упорядочивает код PowerShell, что упрощает распространение. Например, можно создать собственные модули для упаковки и сделать связанные функциональные возможности более управляемыми и общими. Действие Execute PowerShell Code позволяет импортировать как общедоступные, так и частные модули PowerShell.
Общедоступные модули
Чтобы найти общедоступные модули, посетите коллекцию PowerShell. Ресурс приложения логики уровня "Стандартный" может поддерживать до 10 общедоступных модулей. Чтобы использовать любой общедоступный модуль, необходимо включить эту возможность, выполнив следующие действия.
В меню ресурсов приложения логики портал Azure в разделе "Средства разработки" выберите "Дополнительные средства".
На странице "Дополнительные средства" нажмите кнопку "Перейти".
На панели инструментов Kudu Plus в меню консоли отладки выберите CMD.
Перейдите к корневому уровню приложения логики на C:\home\site\wwwroot с помощью структуры каталога или командной строки.
Откройте файл host.json рабочего процесса и задайте для свойства управляемой зависимости значение true, которое уже задано по умолчанию.
"managedDependency": { "enabled": true }
Откройте файл с именем requirements.psd1. Добавьте имя и версию модуля, которую вы хотите использовать с помощью следующего синтаксиса: MajorNumber.* или точной версии модуля, например:
@{ Az = '1.*' SqlServer = '21.1.18147' }
Рекомендации по общедоступным модулям
При использовании управления зависимостями применяются следующие рекомендации.
Чтобы скачать модули, общедоступные модули требуют доступа к коллекция PowerShell.
Управляемые зависимости в настоящее время не поддерживают модули, требующие принятия лицензии, либо принимая лицензию в интерактивном режиме, либо предоставляя параметр -AcceptLicense при запуске Install-Module.
Частные модули
Вы можете создать собственные частные модули PowerShell. Сведения о создании первого модуля PowerShell см. в статье "Запись модуля скрипта PowerShell".
В меню ресурсов приложения логики портал Azure в разделе "Средства разработки" выберите "Дополнительные средства".
На странице "Дополнительные средства" нажмите кнопку "Перейти".
На панели инструментов Kudu Plus в меню консоли отладки выберите 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.