Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
En versionsuppgradering kan medföra icke-bakåtkompatibla ändringar i standardlogikappen, som använder en körning som finns som ett tillägg på Azure Functions-körningen. Innan du uppgraderar läser du följande migreringsguide: Uppgradera dina Azure Functions-appar så att de körs på PowerShell 7.4.
Kontrollera att logikappen använder den senaste körningsversionen för Azure Functions-körning i Azure, som är version 4.x. Mer information finns i Visa den aktuella körningsversionen.
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:
Öppna din standard-logikappresurs i Azure-portalen.
Välj Miljövariabler under Inställningar i resurslisten.
På fliken Appinställningar väljer du + Lägg till.
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_VERSIONNamnet på appinställningen. Value < version av PowerShell> PowerShell-versionen, för närvarande 7.4. 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)
Öppna din standard-logikappresurs i Azure-portalen.
På menyn på resurspanelen går du till Arbetsflöden, väljer Arbetsflöden och sedan ditt tomma arbetsflöde.
På menyn för arbetsflödets sidofält går du till Verktyg och väljer designern för att öppna arbetsflödet.
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.
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 $customResponseI följande exempel visas ett anpassat exempelskript:
$action = Get-TriggerOutput $results = "Hello from PowerShell!" Push-WorkflowOutput -Output $resultsSpara 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:
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 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 -IdentityNu 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å sidomenyn går du till Utvecklingsverktyg och väljer Avancerade verktyg.
På sidan Avancerade verktyg väljer du Go, som öppnar Kudu-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-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.
På menyn på sidomenyn för Application Insights-resursen 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-portalen går du till sidomenyn för logikappens resurs under Utvecklingsverktyg och väljer Avancerade verktyg.
På sidan Avancerade verktyg väljer du Gå.
I Verktygsfältet Kudu 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
ManagedDependency.enabledegenskapen tilltrue, 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 ange
-AcceptLicensealternativet 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-portalen går du till sidomenyn för logikappens resurs under Utvecklingsverktyg och väljer Avancerade verktyg.
På sidan Avancerade verktyg väljer du Gå.
I Verktygsfältet Kudu 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 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.