Dela via


Lägga till och köra PowerShell-skript i Standard-arbetsflöden för Azure Logic Apps (förhandsversion)

Gäller för: Azure Logic Apps (Standard)

Kommentar

Den här funktionen är i förhandsversion och omfattas av kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.

Om du vill utföra anpassade integreringsuppgifter i linje med standardarbetsflödet i Azure Logic Apps kan du lägga till och köra PowerShell-kod direkt inifrån arbetsflödet. För den här uppgiften använder du åtgärden Infogad kod med namnet Kör PowerShell Code. Den här åtgärden returnerar resultatet från Din PowerShell-kod så att du kan använda dessa utdata i arbetsflödets efterföljande åtgärder.

Den här funktionen ger följande fördelar:

  • Skriv egna skript i arbetsflödesdesignern så att du kan lösa komplexa integrationsutmaningar. Inga andra tjänstplaner krävs.

    Den här förmånen minskar komplexiteten och kostnaden eftersom du kan hantera fler tjänster och effektivisera arbetsflödesutvecklingen.

  • Generera en dedikerad kodfil som tillhandahåller ett anpassat skriptutrymme i arbetsflödet.

  • Integrera med Azure Functions PowerShell-funktioner, som ger kraftfull funktionalitet och arv för avancerad uppgiftsutförande.

  • Distribuera skript tillsammans med dina arbetsflöden.

Den här guiden visar hur du lägger till åtgärden i arbetsflödet och lägger till den PowerShell-kod som du vill köra.

Förutsättningar

  • Ett Azure-konto och prenumeration. Om du inte har någon prenumeration kan du registrera ett kostnadsfritt Azure-konto.

  • Logikappresursen för standardarbetsflödet där du tänker lägga till ditt PowerShell-skript.

    Arbetsflödet måste redan börja med en utlösare. Du kan använda valfri utlösare för ditt scenario, men som exempel använder den här guiden utlösaren Begäran med namnet När en HTTP-begäran tas emot och även åtgärden Svar . Arbetsflödet körs när ett annat program eller arbetsflöde skickar en begäran till utlösarens slutpunkts-URL. Exempelskriptet returnerar resultatet från kodkörningen som utdata som du kan använda i efterföljande åtgärder.

    Om du inte har en logikappresurs och ett arbetsflöde skapar du dem nu genom att följa dessa steg:

Att tänka på

  • Azure Portal sparar skriptet som en PowerShell-skriptfil (.ps1) i samma mapp som din workflow.json-fil, som lagrar JSON-definitionen för arbetsflödet, och distribuerar filen till logikappresursen tillsammans med arbetsflödesdefinitionen.

    Med filformatet .ps1 kan du skriva mindre standardkod och fokusera bara på att skriva PowerShell-kod. Om du byter namn på åtgärden byts även filen namn, men inte tvärtom. Om du byter namn på filen direkt skriver den omdöpta versionen över den tidigare versionen. Om åtgärdsnamnet och filnamnen inte matchar kan åtgärden inte hitta filen och försöker skapa en ny tom fil.

  • Skriptet är lokalt för arbetsflödet. Om du vill använda samma skript i andra arbetsflöden visar du skriptfilen i Kudu-konsolen och kopierar sedan skriptet för återanvändning i andra arbetsflöden.

Begränsningar

Namn Begränsning Kommentar
Varaktighet för skriptkörning 10 minuter Om du har scenarier som behöver längre varaktigheter använder du alternativet för produktfeedback för att ge mer information om dina behov.
Utdatastorlek 100 MB Utdatastorleken beror på utdatastorleksgränsen för åtgärder, som vanligtvis är 100 MB.

Uppdatera PowerShell-versionen

Du kan ändra PowerShell-versionen i logikappresursen genom att redigera programinställningarna. Men innan du uppgraderar din app bör du läsa följande:

Kommentar

Om du inte anger någon PowerShell-version använder Azure Logic Apps som standard samma standardversion som Azure Functions. För närvarande är PowerShell 7.4 allmänt tillgängligt. Mer information om tillgängliga versioner finns i utvecklarhandboken för Azure Functions PowerShell.

Följ motsvarande steg baserat på var du vill uppdatera PowerShell-versionen:

  1. Öppna din standard-logikappresurs i Azure-portalen.

  2. Välj Miljövariabler under Inställningar i resurslisten.

  3. På fliken Appinställningar väljer du + Lägg till.

  4. I fönstret Lägg till/redigera programinställning lägger du till följande nya appinställning:

    Parameter Värde Beskrivning
    Namn LOGIC_APPS_POWERSHELL_VERSION Namnet på appinställningen.
    Value < version av PowerShell> PowerShell-versionen, för närvarande 7.4.
  5. När du är klar väljer du Använd. När omstartsvarningen visas väljer du Fortsätt.

    Logikappen startas om med den uppdaterade versionen.

Lägg till åtgärden Execute PowerShell Code (Kör PowerShell Code)

  1. Öppna din standard-logikappresurs i Azure-portalen.

  2. På menyn på resurspanelen går du till Arbetsflöden, väljer Arbetsflöden och sedan ditt tomma arbetsflöde.

  3. På menyn för arbetsflödets sidofält går du till Verktyg och väljer designern för att öppna arbetsflödet.

  4. Lägg till åtgärden Infogade kodåtgärder med namnet Kör PowerShell Code i arbetsflödet genom att följa de allmänna stegen för att lägga till en åtgärd.

  5. När åtgärdsinformationsfönstret har öppnats går du till fliken Parametrar i rutan Kodfil och uppdaterar den förifyllda exempelkoden med din egen kod.

    I följande exempel visas fliken Parametrar för åtgärden med exempelskriptkoden:

    Skärmbild som visar Azure Portal, Standard arbetsflödesdesigner, Begärandeutlösare, Kör PowerShell Code-åtgärd med informationsfönstret öppet och Åtgärd för svar. Informationsfönstret visar powershell-exempelskriptet.

    I följande exempel visas exempelskriptkoden:

    # 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
    

    I följande exempel visas ett anpassat exempelskript:

    $action = Get-TriggerOutput
    $results = "Hello from PowerShell!"
    Push-WorkflowOutput -Output $results
    
  6. Spara arbetsflödet när du är klar.

När du har kört arbetsflödet kan du granska arbetsflödets utdata i Application Insights om det är aktiverat. Mer information finns i Visa utdata i Application Insights.

Komma åt arbetsflödesutlösare och åtgärdsutdata i skriptet

Utdatavärdena från utlösaren och föregående åtgärder returneras med hjälp av ett anpassat objekt som har flera parametrar. Använd cmdletarna Get-TriggerOutput, Get-ActionOutput och Push-WorkflowOutput samt lämpliga parametrar som beskrivs i följande tabell, till exempel för att komma åt dessa utdata och se till att du returnerar önskat värde:

$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

Kommentar

Om du refererar till ett objekt som har en JValue-typ i ett komplext objekt i PowerShell och lägger till objektet i en sträng, får du ett formatfel. Undvik det här felet genom att använda ToString().

Utdata för utlösare och åtgärdssvar

I följande tabell visas de utdata som genereras när du anropar Get-ActionOutput eller Get-TriggerOutput. Returvärdet är ett komplext objekt med namnet PowershellWorkflowOperationResult, som innehåller följande utdata.

Namn Typ Beskrivning
Namn Sträng Namnet på utlösaren eller åtgärden
Ingångar JToken Indatavärdena som skickas till utlösaren eller åtgärden
Utdata JToken Utdata från den körda utlösaren eller åtgärden
StartTime Datum/tid Starttiden för utlösaren eller åtgärden
EndTime Datum/tid Sluttiden för utlösaren eller åtgärden
ScheduledTime Datum/tid Den schemalagda tiden för att köra utlösaren eller åtgärden
OriginHistoryName Sträng Namnet på ursprungshistoriken för utlösare som använder splitOn egenskapen
SourceHistoryName Sträng Namnet på källhistoriken för en återskickad utlösare
TrackingId Sträng Åtgärdsspårnings-ID
Kod Sträng Statuskoden för resultatet
Status Sträng Körningsstatus för utlösaren eller åtgärden, till exempel "Lyckades" eller "Misslyckades"
Fel JToken HTTP-felkoden
TrackedProperties JToken Alla spårade egenskaper som du har konfigurerat

Returnera utdata till arbetsflödet

Om du vill returnera utdata till arbetsflödet måste du använda cmdletenPush-WorkflowOutput.

Anpassade PowerShell-kommandon

Åtgärden Kör PowerShell Code innehåller följande anpassade PowerShell-kommandon (cmdletar) för att interagera med arbetsflödet och andra åtgärder i arbetsflödet:

Get-TriggerOutput

Hämtar utdata från arbetsflödets utlösare.

Syntax

Get-TriggerOutput

Parametrar

Inget.

Get-ActionOutput

Hämtar utdata från en annan åtgärd i arbetsflödet och returnerar ett objekt med namnet PowershellWorkflowOperationResult.

Syntax

Get-ActionOutput [ -ActionName <String> ]

Parametrar

Parameter Typ Beskrivning
ActionName Sträng Namnet på åtgärden i arbetsflödet med de utdata som du vill referera till.

Push-WorkflowOutput

Skickar utdata från åtgärden Kör PowerShell Code till arbetsflödet, vilket kan skicka tillbaka alla objekttyper. Om returvärdet är null får du ett null-objektfel från cmdleten.

Kommentar

Cmdletarna Write-Debug, Write-Hostoch Write-Output returnerar inte värden till arbetsflödet. Instruktionen return returnerar inte heller värden till arbetsflödet. Du kan dock använda dessa cmdletar för att skriva spårningsmeddelanden som visas i Application Insights. Mer information finns i Microsoft.PowerShell.Utility.

Syntax

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

Parametrar

Parameter Typ Beskrivning
Resultat Varierar Utdata som du vill återgå till arbetsflödet. Dessa utdata kan ha vilken typ som helst.
Clobber Varierar En valfri växelparameter som du kan använda för att åsidosätta tidigare push-utdata.

Autentisera och auktorisera åtkomst med en hanterad identitet med hjälp av PowerShell

Med en hanterad identitet kan logikappens resurs och arbetsflöde autentisera och auktorisera åtkomst till alla Azure-tjänster och resurser som stöder Microsoft Entra-autentisering utan att inkludera autentiseringsuppgifter i koden.

Inifrån åtgärden Kör PowerShell Code kan du autentisera och auktorisera åtkomst med en hanterad identitet så att du kan utföra åtgärder på andra Azure-resurser där du har aktiverat åtkomst. Du kan till exempel starta om en virtuell dator eller hämta körningsinformationen för ett annat logikapparbetsflöde.

Om du vill använda den hanterade identiteten inifrån åtgärden Kör PowerShell Code måste du följa dessa steg:

  1. Konfigurera den hanterade identiteten i logikappen och ge den hanterade identiteten åtkomst till azure-målresursen. Detaljerade steg finns i Autentisera åtkomst och anslutningar till Azure-resurser med hanterade identiteter.

    Granska följande överväganden för Azure-målresursen:

    • På fliken Roll räcker det vanligtvis med en deltagarroll .

    • På sidan Lägg till rolltilldelningfliken Medlemmar för egenskapen Tilldela åtkomst till ser du till att du väljer Hanterad identitet.

    • När du har valt Välj medlemmar går du till fönstret Välj hanterade identiteter och väljer den hanterade identitet som du vill använda.

  2. I åtgärden Execute PowerShell Code (Kör PowerShell Code) inkluderar du följande kod som den första instruktionen:

    Connect-AzAccount -Identity
    
  3. Nu kan du arbeta med Azure-resursen med hjälp av cmdletar och moduler.

Visa skriptfilen

  1. I Azure Portal öppnar du standardlogikappresursen som har det arbetsflöde som du vill använda.

  2. På sidomenyn går du till Utvecklingsverktyg och väljer Avancerade verktyg.

  3. På sidan Avancerade verktyg väljer du Go, som öppnar Kudu-konsolen .

  4. Öppna menyn Felsökningskonsol och välj CMD.

  5. Gå till logikappens rotplats: site/wwwroot

  6. Gå till arbetsflödets mapp, som innehåller .ps1-filen, längs den här sökvägen: site/wwwroot/{workflow-name}

  7. Bredvid filnamnet väljer du Redigera för att öppna och visa filen.

Visa loggar i Application Insights

  1. I Azure-portalen går du till sidomenyn för logikappen under Övervakning, väljer Application Insights (inte Insikter) och väljer sedan länken till din Application Insights-resurs.

  2. På menyn på sidomenyn för Application Insights-resursen går du till Övervakning och väljer Loggar.

  3. Skapa en fråga för att hitta eventuella spårningar eller fel från arbetsflödeskörningen, till exempel:

    union traces, errors
    | project TIMESTAMP, message
    

Moduler

PowerShell-moduler är fristående, återanvändbara enheter som innehåller olika komponenter, till exempel:

  • Cmdletar: Enskilda kommandon som utför specifika uppgifter.
  • Providers: Tillåt åtkomst till datalager, till exempel registret eller filsystemet, som om de vore enheter.
  • Funktioner: Återanvändbara kodblock som utför specifika åtgärder.
  • Variabler: Lagra data för användning i modulen.
  • Andra typer av resurser.

En modul organiserar PowerShell-kod, vilket gör det enklare att distribuera. Du kan till exempel skapa egna moduler för att paketera och göra relaterade funktioner mer hanterbara och delbara. Med åtgärden Kör PowerShell Code kan du importera både offentliga och privata PowerShell-moduler.

Offentliga moduler

Om du vill hitta offentligt tillgängliga moduler går du till PowerShell-galleriet. En standardlogikappresurs har stöd för upp till 10 offentliga moduler. Om du vill använda en offentlig modul måste du aktivera den här funktionen genom att följa dessa steg:

  1. I Azure-portalen går du till sidomenyn för logikappens resurs under Utvecklingsverktyg och väljer Avancerade verktyg.

  2. På sidan Avancerade verktyg väljer du .

  3. I Verktygsfältet Kudu går du till menyn Felsökningskonsol och väljer CMD.

  4. Bläddra till logikappens rotnivå på C:\home\site\wwwroot med hjälp av katalogstrukturen eller kommandoraden.

  5. Öppna arbetsflödets host.json-fil och ange ManagedDependency.enabled egenskapen till true, som redan har angetts som standard.

    "managedDependency": {
        "enabled": true
    }
    
  6. Öppna filen med namnet requirements.psd1. Inkludera namnet och versionen för den modul som du vill använda med hjälp av följande syntax: MajorNumber.* eller den exakta modulversionen, till exempel:

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

Överväganden för offentliga moduler

Om du använder beroendehantering gäller följande överväganden:

  • För att ladda ned moduler kräver offentliga moduler åtkomst till PowerShell-galleriet.

  • Hanterade beroenden stöder för närvarande inte moduler som kräver att du accepterar en licens, antingen genom att acceptera licensen interaktivt eller genom att ange -AcceptLicense alternativet när du kör Install-Module.

Privata moduler

Du kan generera dina egna privata PowerShell-moduler. Information om hur du skapar din första PowerShell-modul finns i Skriva en PowerShell-skriptmodul.

  1. I Azure-portalen går du till sidomenyn för logikappens resurs under Utvecklingsverktyg och väljer Avancerade verktyg.

  2. På sidan Avancerade verktyg väljer du .

  3. I Verktygsfältet Kudu går du till menyn Felsökningskonsol och väljer CMD.

  4. Bläddra till logikappens rotnivå på C:\home\site\wwwroot med hjälp av katalogstrukturen eller kommandoraden.

  5. Skapa en mapp med namnet Moduler.

  6. I mappen Moduler skapar du en undermapp med samma namn som din privata modul.

  7. I mappen för den privata modulen lägger du till din privata PowerShell-modulfil med filnamnstillägget .psm1. Du kan också inkludera en valfri PowerShell-manifestfil med filnamnstillägget .psd1.

När du är klar ser din fullständiga logikappsfilstruktur ut ungefär som i följande exempel:

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

Kompileringsfel

I den här versionen innehåller den webbaserade redigeraren begränsat IntelliSense-stöd, som fortfarande är under förbättring. Eventuella kompileringsfel identifieras när du sparar arbetsflödet och Azure Logic Apps-körningen kompilerar skriptet. Dessa fel visas i logikappens felloggar via Application Insights.

Körningsfel

En arbetsflödesåtgärd returnerar inga utdata.

Kontrollera att du använder cmdleten Push-WorkflowOutput .

Det går inte att köra PowerShell Code-åtgärden: "Termen {some-text} känns inte igen..."

Om du felaktigt refererar till en offentlig modul i filen requirements.psd1 , eller om din privata modul inte finns i sökvägen C:\home\site\wwwroot\Modules{module-name}, får du följande fel:

"Termen {some-text} känns inte igen som ett namn på en cmdlet, funktion, skriptfil eller körbart program. Kontrollera stavningen av namnet eller om en sökväg har inkluderats, kontrollera att sökvägen är korrekt och försök igen."

Kommentar

Som standard visas Az*-modulerna i filen requirements.psd1 , men de kommenteras ut när filen skapas. När du refererar till en cmdlet från modulen måste du ta bort kommentaren till modulen.

Åtgärden Kör PowerShell Code misslyckas: "Det går inte att binda argumentet till parametern "Output" eftersom det är null.

Det här felet inträffar när du försöker skicka ett null-objekt till arbetsflödet. Kontrollera om objektet som du skickar med Push-WorkflowOutput inte är null.