Lägga till och köra PowerShell-skriptkod 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 effektiviserar arbetsflödesutvecklingen och minskar komplexiteten och kostnaden med att hantera fler tjänster.
Generera en dedikerad kodfil som tillhandahåller ett anpassat skriptutrymme i arbetsflödet.
Integrera med Azure Functions PowerShell Functions, som ger kraftfulla funktioner och arv för avancerad uppgiftskörning.
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.
Arbetsflödet för standardlogikappen där du vill lägga till ditt PowerShell-skript. Arbetsflödet måste redan börja med en utlösare. Mer information finns i Skapa exempel på standardarbetsflöden för logikappar.
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.
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 .ps1-filformatet kan du skriva mindre "boilerplate" 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 kan du visa skriptfilen i KuduPlus-konsolen och sedan kopiera skriptet för återanvändning i andra arbetsflöden.
Begränsningar
Name | 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. |
Lägg till åtgärden Execute PowerShell Code (Kör PowerShell Code)
I Azure Portal öppnar du standardlogikappresursen och arbetsflödet i designern.
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.
Information om hur du kommer åt data som kommer från arbetsflödet finns i Åtkomstarbetsflödesutlösare och åtgärdsutdata i skriptet senare i den här guiden.
Information om hur du returnerar skriptets resultat eller andra data till arbetsflödet finns i Returnera data till arbetsflödet.
I följande exempel visas fliken Parametrar för åtgärden med exempelskriptkoden:
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
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 | Type | Beskrivning |
---|---|---|
Namn | String | 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 utfö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 eller utlösaren. |
OriginHistoryName | String | Namnet på ursprungshistoriken för utlösare med alternativet Dela upp aktiverat. |
SourceHistoryName | String | Namnet på källhistoriken för en återprenumerationsutlösare. |
TrackingId | String | Åtgärdsspårnings-ID. |
Code | String | Statuskoden för resultatet. |
Status | String | 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 cmdleten Push-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 | String | 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-Host och Write-Output returnerar inte värden till arbetsflödet. Retursatsen 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 |
---|---|---|
Output | 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:
-
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 rolltilldelning på fliken 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.
I åtgärden Execute PowerShell Code (Kör PowerShell Code) inkluderar du följande kod som den första instruktionen:
Connect-AzAccount -Identity
Nu kan du arbeta med Azure-resursen med hjälp av cmdletar och moduler.
Visa skriptfilen
I Azure Portal öppnar du standardlogikappresursen som har det arbetsflöde som du vill använda.
På resursmenyn för logikappen går du till Utvecklingsverktyg och väljer Avancerade verktyg.
På sidan Avancerade verktyg väljer du Go, som öppnar KuduPlus-konsolen .
Öppna menyn Felsökningskonsol och välj CMD.
Gå till logikappens rotplats: site/wwwroot
Gå till arbetsflödets mapp, som innehåller .ps1-filen, längs den här sökvägen: site/wwwroot/{workflow-name}
Bredvid filnamnet väljer du Redigera för att öppna och visa filen.
Visa loggar i Application Insights
I Azure Portal går du till resursmenyn för logikappen under Inställningar, väljer Application Insights och väljer sedan logikappen.
På Menyn Application Insights går du till Övervakning och väljer Loggar.
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:
I Azure Portal går du till resursmenyerna för logikappen och väljer Avancerade verktyg under Utvecklingsverktyg.
På sidan Avancerade verktyg väljer du Gå.
I verktygsfältet Kudu Plus går du till menyn Felsökningskonsol och väljer CMD.
Bläddra till logikappens rotnivå på C:\home\site\wwwroot med hjälp av katalogstrukturen eller kommandoraden.
Öppna arbetsflödets host.json-fil och ange egenskapen för hanterat beroende till true, som redan har angetts som standard.
"managedDependency": { "enabled": true }
Ö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 tillhandahålla alternativet -AcceptLicense 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.
I Azure Portal går du till resursmenyn för logikappen under Utvecklingsverktyg och väljer Avancerade verktyg.
På sidan Avancerade verktyg väljer du Gå.
I verktygsfältet Kudu Plus går du till menyn Felsökningskonsol och väljer CMD.
Bläddra till logikappens rotnivå på C:\home\site\wwwroot med hjälp av katalogstrukturen eller kommandoraden.
Skapa en mapp med namnet Moduler.
I mappen Moduler skapar du en undermapp med samma namn som din privata modul.
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 följande sökväg: C:\home\site\wwwroot\Modules{module-name}, får du följande fel:
Termen {some-text} identifieras inte som ett namn på ett cmdlet-, funktions-, 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.