Partilhar via


Adicionar e executar código de script do PowerShell em fluxos de trabalho padrão para Aplicativos Lógicos do Azure (Visualização)

Aplica-se a: Aplicativos Lógicos do Azure (Padrão)

Nota

Esta funcionalidade está em pré-visualização e está sujeita aos Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.

Para executar tarefas de integração personalizadas em linha com seu fluxo de trabalho Standard nos Aplicativos Lógicos do Azure, você pode adicionar e executar diretamente o código do PowerShell de dentro do seu fluxo de trabalho. Para esta tarefa, use a ação Código embutido chamada Executar código do PowerShell. Essa ação retorna os resultados do código do PowerShell para que você possa usar essa saída nas ações subsequentes do fluxo de trabalho.

Esse recurso oferece os seguintes benefícios:

  • Escreva seus próprios scripts dentro do designer de fluxo de trabalho para que você possa resolver desafios complexos de integração. Não são necessários outros planos de serviço.

    Esse benefício simplifica o desenvolvimento do fluxo de trabalho e reduz a complexidade e o custo com o gerenciamento de mais serviços.

  • Gere um arquivo de código dedicado, que fornece um espaço de script personalizado em seu fluxo de trabalho.

  • Integre com o Azure Functions PowerShell Functions, que fornece funcionalidade poderosa e herança para execução avançada de tarefas.

  • Implante scripts junto com seus fluxos de trabalho.

Este guia mostra como adicionar a ação em seu fluxo de trabalho e adicionar o código do PowerShell que você deseja executar.

Pré-requisitos

  • Uma conta e subscrição do Azure. Se não tiver uma subscrição, inscreva-se numa conta do Azure gratuita.

  • O fluxo de trabalho do aplicativo lógico padrão onde você deseja adicionar seu script do PowerShell. O fluxo de trabalho já deve começar com um gatilho. Para obter mais informações, consulte Criar exemplos de fluxos de trabalho de aplicativos lógicos padrão.

    Você pode usar qualquer gatilho para seu cenário, mas, como exemplo, este guia usa o gatilho de solicitação chamado Quando uma solicitação HTTP é recebida e também a ação Resposta . O fluxo de trabalho é executado quando outro aplicativo ou fluxo de trabalho envia uma solicitação para a URL do ponto de extremidade do gatilho. O script de exemplo retorna os resultados da execução de código como saída que você pode usar em ações subsequentes.

Considerações

  • O portal do Azure salva seu script como um arquivo de script do PowerShell (.ps1) na mesma pasta que o arquivo workflow.json , que armazena a definição JSON para seu fluxo de trabalho e implanta o arquivo no recurso do aplicativo lógico junto com a definição do fluxo de trabalho.

    O formato de arquivo .ps1 permite que você escreva menos "clichê" e se concentre apenas em escrever código do PowerShell. Se você renomear a ação, o arquivo também será renomeado, mas não vice-versa. Se você renomear diretamente o arquivo, a versão renomeada substituirá a versão anterior. Se o nome da ação e os nomes de arquivo não corresponderem, a ação não conseguirá localizar o arquivo e tentará criar um novo arquivo vazio.

  • O script é local para o fluxo de trabalho. Para usar o mesmo script em outros fluxos de trabalho, exiba o arquivo de script no console do KuduPlus e copie o script para reutilizar em outros fluxos de trabalho.

Limitações

Nome Limite Notas
Duração da execução do script 10 minutos Se você tiver cenários que precisam de durações maiores, use a opção de feedback do produto para fornecer mais informações sobre suas necessidades.
Tamanho da saída 100 MB O tamanho da saída depende do limite de tamanho de saída para ações, que geralmente é de 100 MB.

Adicionar a ação Executar código do PowerShell

  1. No portal do Azure, abra o recurso e o fluxo de trabalho do aplicativo lógico padrão no designer.

  2. No designer, siga estas etapas gerais para adicionar a ação Inline Code Operations chamada Executar código do PowerShell ao seu fluxo de trabalho.

  3. Depois que o painel de informações da ação for aberto, na guia Parâmetros , na caixa Arquivo de código , atualize o código de exemplo pré-preenchido com seu próprio código.

    O exemplo a seguir mostra a guia Parâmetros da ação com o código de script de exemplo:

    A captura de tela mostra o portal do Azure, o designer de fluxo de trabalho padrão, o gatilho de solicitação, a ação Executar código do PowerShell com o painel de informações aberto e a ação Resposta. O painel de informações mostra um script PowerShell de exemplo.

    O exemplo a seguir mostra o código de script de exemplo:

    # 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
    

    O exemplo a seguir mostra um script de exemplo personalizado:

    $action = Get-TriggerOutput
    $results = "Hello from PowerShell!"
    Push-WorkflowOutput -Output $results
    
  4. Quando terminar, salve seu fluxo de trabalho.

Depois de executar o fluxo de trabalho, você pode revisar a saída do fluxo de trabalho no Application Insights, se habilitado. Para obter mais informações, consulte Exibir saída no Application Insights.

Acesse o gatilho do fluxo de trabalho e as saídas de ação em seu script

Os valores de saída do gatilho e das ações anteriores são retornados usando um objeto personalizado, que tem vários parâmetros. Para acessar essas saídas e garantir que você retorne o valor desejado, use os cmdlets Get-TriggerOutput, Get-ActionOutput e Push-WorkflowOutput, além de quaisquer parâmetros apropriados descritos na tabela a seguir, por exemplo:

$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

Nota

No PowerShell, se você fizer referência a um objeto que tenha o tipo JValue dentro de um objeto complexo e adicionar esse objeto a uma cadeia de caracteres, obterá uma exceção de formato. Para evitar esse erro, use ToString().

Saídas de gatilho e resposta à ação

A tabela a seguir lista as saídas geradas quando você chama Get-ActionOutput ou Get-TriggerOutput. O valor de retorno é um objeto complexo chamado PowershellWorkflowOperationResult, que contém as seguintes saídas.

Nome Tipo Description
Nome Cadeia (de carateres) O nome do gatilho ou ação.
Insumos JToken Os valores de entrada passados para o gatilho ou ação.
Saídas JToken As saídas do gatilho ou ação executada.
Horário de Início DateTime A hora de início do gatilho ou ação.
Tempo de Fim DateTime A hora de término do gatilho ou ação.
ScheduledTime DateTime A hora agendada para executar o gatilho ou ação ou gatilho.
OriginHistoryName String O nome do histórico de origem para gatilhos com a opção Split-On ativada.
SourceHistoryName String O nome do histórico de origem de um gatilho reenviado.
TrackingId String O ID de rastreamento da operação.
Código String O código de status do resultado.
Status String O status de execução do gatilho ou ação, por exemplo, Sucedido ou Reprovado.
Erro JToken O código de erro HTTP.
TrackedProperties JToken Todas as propriedades controladas configuradas.

Retornar saídas para seu fluxo de trabalho

Para retornar quaisquer saídas ao seu fluxo de trabalho, você deve usar o cmdlet Push-WorkflowOutput.

Comandos personalizados do PowerShell

A ação Executar código do PowerShell inclui os seguintes comandos personalizados do PowerShell (cmdlets) para interagir com seu fluxo de trabalho e outras operações em seu fluxo de trabalho:

Get-TriggerOutput

Obtém a saída do gatilho do fluxo de trabalho.

Sintaxe

Get-TriggerOutput

Parâmetros

Nenhum.

Get-ActionOutput

Obtém a saída de outra ação no fluxo de trabalho e retorna um objeto chamado PowershellWorkflowOperationResult.

Sintaxe

Get-ActionOutput [ -ActionName <String> ]

Parâmetros

Parâmetro Tipo Description
Nome da ação String O nome da ação no fluxo de trabalho com a saída que você deseja referenciar.

Push-WorkflowOutput

Envia a saída da ação Executar código do PowerShell para seu fluxo de trabalho, que pode repassar qualquer tipo de objeto. Se o valor de retorno for null, você obterá um erro de objeto nulo do cmdlet.

Nota

Os cmdlets Write-Debug, Write-Host e Write-Output não retornam valores ao seu fluxo de trabalho. A instrução return também não retorna valores para seu fluxo de trabalho. No entanto, você pode usar esses cmdlets para gravar mensagens de rastreamento que aparecem no Application Insights. Para obter mais informações, consulte Microsoft.PowerShell.Utility.

Sintaxe

Push-WorkflowOutput [-Output <Object>] [-Clobber]

Parâmetros

Parâmetro Tipo Description
Saída Varia. A saída que você deseja retornar ao fluxo de trabalho. Esta saída pode ter qualquer tipo.
Clobber Varia. Um parâmetro de switch opcional que você pode usar para substituir a saída enviada anteriormente.

Autenticar e autorizar o acesso com uma identidade gerenciada usando o PowerShell

Com uma identidade gerenciada, seu recurso de aplicativo lógico e fluxo de trabalho podem autenticar e autorizar o acesso a qualquer serviço e recurso do Azure que ofereça suporte à autenticação do Microsoft Entra sem incluir credenciais em seu código.

De dentro da ação Executar Código do PowerShell, você pode autenticar e autorizar o acesso com uma identidade gerenciada para que possa executar ações em outros recursos do Azure onde você habilitou o acesso. Por exemplo, você pode reiniciar uma máquina virtual ou obter os detalhes de execução de outro fluxo de trabalho de aplicativo lógico.

Para usar a identidade gerenciada de dentro da ação Executar código do PowerShell, você deve seguir estas etapas:

  1. Siga estas etapas para configurar a identidade gerenciada em seu aplicativo lógico e conceder acesso à identidade gerenciada no recurso do Azure de destino.

    No recurso do Azure de destino, analise as seguintes considerações:

    • Na guia Função, uma função de Colaborador geralmente é suficiente.

    • Na página Adicionar atribuição de função, na guia Membros, para a propriedade Atribuir acesso a, certifique-se de selecionar Identidade gerenciada.

    • Depois de selecionar Selecionar membros, no painel Selecionar identidades gerenciadas, selecione a identidade gerenciada que deseja usar.

  2. Em sua ação Executar código do PowerShell, inclua o seguinte código como a primeira instrução:

    Connect-AzAccount -Identity
    
  3. Agora, você pode trabalhar com o recurso do Azure usando cmdlets e módulos.

Exibir o arquivo de script

  1. No portal do Azure, abra seu recurso de aplicativo lógico padrão que tem o fluxo de trabalho desejado.

  2. No menu de recursos do aplicativo lógico, em Ferramentas de Desenvolvimento, selecione Ferramentas Avançadas.

  3. Na página Ferramentas Avançadas, selecione Ir, que abre o console KuduPlus.

  4. Abra o menu Depurar console e selecione CMD.

  5. Vá para o local raiz do seu aplicativo lógico: site/wwwroot

  6. Vá para a pasta do seu fluxo de trabalho, que contém o arquivo .ps1, ao longo deste caminho: site/wwwroot/{workflow-name}

  7. Ao lado do nome do arquivo, selecione Editar para abrir e exibir o arquivo.

Exibir logs no Application Insights

  1. No portal do Azure, no menu de recursos do aplicativo lógico, em Configurações, selecione Application Insights e selecione seu aplicativo lógico.

  2. No menu Application Insights, em Monitoramento, selecione Logs.

  3. Crie uma consulta para localizar quaisquer vestígios ou erros da execução do fluxo de trabalho, por exemplo:

    union traces, errors
    | project TIMESTAMP, message
    

Módulos

Os módulos do PowerShell são unidades autônomas e reutilizáveis que incluem vários componentes, por exemplo:

  • Cmdlets: comandos individuais que executam tarefas específicas.
  • Provedores: permitem o acesso a armazenamentos de dados, como o registro ou o sistema de arquivos, como se fossem unidades.
  • Funções: Blocos de código reutilizáveis que executam ações específicas.
  • Variáveis: Armazene dados para uso dentro do módulo.
  • Outros tipos de recursos.

Um módulo organiza o código do PowerShell, facilitando a distribuição. Por exemplo, você pode criar seus próprios módulos para empacotar e tornar a funcionalidade relacionada mais gerenciável e compartilhável. A ação Executar código do PowerShell permite importar módulos públicos e privados do PowerShell.

Módulos públicos

Para encontrar módulos disponíveis publicamente, visite a galeria do PowerShell. Um recurso de aplicativo lógico padrão pode suportar até 10 módulos públicos. Para usar qualquer módulo público, você deve habilitar esse recurso seguindo estas etapas:

  1. No portal do Azure, nos menus de recursos do aplicativo lógico, em Ferramentas de Desenvolvimento, selecione Ferramentas Avançadas.

  2. Na página Ferramentas Avançadas, selecione Ir.

  3. Na barra de ferramentas do Kudu Plus , no menu Depurar console , selecione CMD.

  4. Navegue até o nível raiz do seu aplicativo lógico em C:\home\site\wwwroot usando a estrutura de diretórios ou a linha de comando.

  5. Abra o arquivo host.json do fluxo de trabalho e defina a propriedade de dependência gerenciada como true, que já está definida por padrão.

    "managedDependency": {
        "enabled": true
    }
    
  6. Abra o arquivo chamado requirements.psd1. Inclua o nome e a versão do módulo desejado usando a seguinte sintaxe: MajorNumber.* ou a versão exata do módulo, por exemplo:

    @{
        Az = '1.*'
        SqlServer = '21.1.18147'
    } 
    

Considerações para módulos públicos

Se você usar o gerenciamento de dependência, as seguintes considerações se aplicam:

  • Para baixar módulos, os módulos públicos exigem acesso à Galeria do PowerShell.

  • Atualmente, as dependências gerenciadas não suportam módulos que exigem que você aceite uma licença, seja aceitando a licença interativamente ou fornecendo a opção -AcceptLicense quando você executa Install-Module.

Módulos privados

Você pode gerar seus próprios módulos privados do PowerShell. Para criar seu primeiro módulo do PowerShell, consulte Escrever um módulo de script do PowerShell.

  1. No portal do Azure, no menu de recursos do aplicativo lógico, em Ferramentas de Desenvolvimento, selecione Ferramentas Avançadas.

  2. Na página Ferramentas Avançadas, selecione Ir.

  3. Na barra de ferramentas do Kudu Plus , no menu Depurar console , selecione CMD.

  4. Navegue até o nível raiz do seu aplicativo lógico em C:\home\site\wwwroot usando a estrutura de diretórios ou a linha de comando.

  5. Crie uma pasta chamada Modules.

  6. Na pasta Módulos, crie uma subpasta com o mesmo nome do módulo privado.

  7. Na pasta do módulo privado, adicione o arquivo de módulo privado do PowerShell com a extensão de nome de arquivo psm1 . Você também pode incluir um arquivo de manifesto do PowerShell opcional com a extensão de nome de arquivo psd1 .

Quando terminar, a estrutura completa do arquivo do aplicativo lógico será semelhante ao exemplo a seguir:

MyLogicApp
-- execute_powershell_script.ps1
-- mytestworkflow.json
Modules
-- MyPrivateModule
--- MyPrivateModule.psd1
--- MyPrivateModule.psm1
-- MyPrivateModule2
--- MyPrivateModule2.psd1
--- MyPrivateModule2.psm1
requirements.psd1
host.json

Erros de compilação

Nesta versão, o editor baseado na Web inclui suporte limitado ao IntelliSense, que ainda está em melhoria. Quaisquer erros de compilação são detetados quando você salva seu fluxo de trabalho, e o tempo de execução dos Aplicativos Lógicos do Azure compila seu script. Esses erros aparecem nos logs de erros do seu aplicativo lógico por meio do Application Insights.

Erros de tempo de execução

Uma ação de fluxo de trabalho não retorna nenhuma saída.

Certifique-se de usar o cmdlet Push-WorkflowOutput .

A ação Executar código do PowerShell falha: "O termo '{some-text}' não é reconhecido..."

Se você fizer referência incorreta a um módulo público no arquivo requirements.psd1 ou quando o módulo privado não existir no seguinte caminho: C:\home\site\wwwroot\Modules{module-name}, você receberá o seguinte erro:

O termo '{some-text}' não é reconhecido como um nome de um cmdlet, função, arquivo de script ou programa executável. Verifique a ortografia do nome ou se um caminho foi incluído, verifique se o caminho está correto e tente novamente.

Nota

Por padrão, os módulos Az* aparecem no arquivo requirements.psd1, mas são comentados na criação do arquivo. Ao fazer referência a um cmdlet do módulo, certifique-se de descomentar o módulo.

A ação Executar código do PowerShell falha: "Não é possível vincular o argumento ao parâmetro 'Saída' porque ele é nulo."

Esse erro acontece quando você tenta enviar por push um objeto nulo para o fluxo de trabalho. Confirme se o objeto que você está enviando com Push-WorkflowOutput não é nulo.