PowerShell-scriptcode toevoegen en uitvoeren in Standaardwerkstromen voor Azure Logic Apps (preview)
Van toepassing op: Azure Logic Apps (Standard)
Notitie
Deze mogelijkheid is in preview en is onderworpen aan de aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.
Als u aangepaste integratietaken inline wilt uitvoeren met uw Standard-werkstroom in Azure Logic Apps, kunt u powerShell-code rechtstreeks vanuit uw werkstroom toevoegen en uitvoeren. Gebruik voor deze taak de actie Inline Code uitvoeren met de naam PowerShell Code uitvoeren. Met deze actie worden de resultaten van uw PowerShell-code geretourneerd, zodat u deze uitvoer kunt gebruiken in de volgende acties van uw werkstroom.
Deze mogelijkheid biedt de volgende voordelen:
Schrijf uw eigen scripts in de werkstroomontwerper, zodat u complexe integratieproblemen kunt oplossen. Er zijn geen andere serviceplannen nodig.
Dit voordeel stroomlijnt de ontwikkeling van werkstromen en vermindert de complexiteit en kosten met het beheren van meer services.
Genereer een toegewezen codebestand, dat een gepersonaliseerde scriptruimte in uw werkstroom biedt.
Integreer met Azure Functions PowerShell Functions, dat krachtige functionaliteit en overname biedt voor geavanceerde taakuitvoering.
Implementeer scripts naast uw werkstromen.
In deze handleiding ziet u hoe u de actie toevoegt aan uw werkstroom en hoe u de PowerShell-code toevoegt die u wilt uitvoeren.
Vereisten
Een Azure-account en -abonnement. Als u nog geen abonnement hebt, meld u dan aan voor een gratis Azure-account.
De werkstroom voor de logische standaard-app waar u uw PowerShell-script wilt toevoegen. De werkstroom moet al beginnen met een trigger. Zie Voorbeeldwerkstromen voor logische apps maken voor meer informatie.
U kunt elke trigger voor uw scenario gebruiken, maar in deze handleiding wordt de aanvraagtrigger met de naam Wanneer een HTTP-aanvraag wordt ontvangen en ook de actie Antwoord gebruikt. De werkstroom wordt uitgevoerd wanneer een andere toepassing of werkstroom een aanvraag naar de eindpunt-URL van de trigger verzendt. Het voorbeeldscript retourneert de resultaten van code-uitvoering als uitvoer die u in volgende acties kunt gebruiken.
Overwegingen
Azure Portal slaat uw script op als een PowerShell-scriptbestand (.ps1) in dezelfde map als uw workflow.json-bestand , waarin de JSON-definitie voor uw werkstroom wordt opgeslagen en het bestand wordt geïmplementeerd in de resource van uw logische app, samen met de werkstroomdefinitie.
Met de .ps1-bestandsindeling kunt u minder 'standaard' schrijven en zich richten op het schrijven van PowerShell-code. Als u de naam van de actie wijzigt, wordt de naam van het bestand ook gewijzigd, maar niet omgekeerd. Als u de naam van het bestand rechtstreeks wijzigt, overschrijft de hernoemde versie de vorige versie. Als de actienaam en bestandsnamen niet overeenkomen, kan het bestand niet worden gevonden en wordt geprobeerd een nieuw leeg bestand te maken.
Het script is lokaal voor de werkstroom. Als u hetzelfde script in andere werkstromen wilt gebruiken, bekijkt u het scriptbestand in de KuduPlus-console en kopieert u het script om het opnieuw te gebruiken in andere werkstromen.
Beperkingen
Naam | Limiet | Opmerkingen |
---|---|---|
Duur van scriptuitvoering | 10 minuten | Als u scenario's hebt die langere duur nodig hebben, gebruikt u de optie voor productfeedback om meer informatie over uw behoeften te geven. |
Uitvoergrootte | 100 MB | De uitvoergrootte is afhankelijk van de uitvoergroottelimiet voor acties, die over het algemeen 100 MB zijn. |
De actie PowerShell-code uitvoeren toevoegen
Open in Azure Portal de resource en werkstroom van uw standaard logische app in de ontwerpfunctie.
Volg deze algemene stappen in de ontwerpfunctie om de actie Inline-codebewerkingen met de naam PowerShell Code uitvoeren toe te voegen aan uw werkstroom.
Nadat het deelvenster met actiegegevens is geopend, werkt u op het tabblad Parameters in het vak Codebestand de vooraf ingevulde voorbeeldcode bij met uw eigen code.
Als u toegang wilt krijgen tot gegevens die afkomstig zijn uit uw werkstroom, raadpleegt u de uitvoer van de Access-werkstroom en de uitvoer van acties in uw script verderop in deze handleiding.
Als u de resultaten of andere gegevens van het script wilt retourneren aan uw werkstroom, raadpleegt u Retourgegevens naar uw werkstroom.
In het volgende voorbeeld ziet u het tabblad Parameters van de actie met de voorbeeldscriptcode:
In het volgende voorbeeld ziet u de voorbeeldscriptcode:
# 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
In het volgende voorbeeld ziet u een aangepast voorbeeldscript:
$action = Get-TriggerOutput $results = "Hello from PowerShell!" Push-WorkflowOutput -Output $results
Sla uw werkstroom op wanneer u klaar bent.
Nadat u uw werkstroom hebt uitgevoerd, kunt u de uitvoer van de werkstroom controleren in Application Insights, indien ingeschakeld. Zie Uitvoer weergeven in Application Insights voor meer informatie.
Uitvoer van werkstroomtriggers en -acties in uw script openen
De uitvoerwaarden van de trigger en voorgaande acties worden geretourneerd met behulp van een aangepast object met meerdere parameters. Als u deze uitvoer wilt openen en ervoor wilt zorgen dat u de gewenste waarde retourneert, gebruikt u de cmdlets Get-TriggerOutput, Get-ActionOutput en Push-WorkflowOutput plus eventuele geschikte parameters die in de volgende tabel worden beschreven, bijvoorbeeld:
$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
Notitie
Als u in PowerShell verwijst naar een object met een JValue-type in een complex object en u dat object aan een tekenreeks toevoegt, krijgt u een notatie-uitzondering. Gebruik ToString() om deze fout te voorkomen.
Uitvoer van trigger- en actiereacties
De volgende tabel bevat de uitvoer die worden gegenereerd wanneer u Get-ActionOutput of Get-TriggerOutput aanroept. De retourwaarde is een complex object met de naam PowershellWorkflowOperationResult, dat de volgende uitvoer bevat.
Name | Type | Description |
---|---|---|
Naam | String | De naam van de trigger of actie. |
Ingangen | JToken | De invoerwaarden die zijn doorgegeven aan de trigger of actie. |
Uitvoer | JToken | De uitvoer van de uitgevoerde trigger of actie. |
StartTime | Datum en tijd | De begintijd voor de trigger of actie. |
EndTime | Datum en tijd | De eindtijd voor de trigger of actie. |
ScheduledTime | Datum en tijd | De geplande tijd om de trigger of actie of trigger uit te voeren. |
OriginHistoryName | String | De naam van de oorsprongsgeschiedenis voor triggers waarvoor de optie Splitsen is ingeschakeld. |
SourceHistoryName | String | De naam van de brongeschiedenis voor een opnieuw verzonden trigger. |
TrackingId | String | De tracerings-id van de bewerking. |
Code | String | De statuscode voor het resultaat. |
-Status | String | De uitvoeringsstatus voor de trigger of actie, bijvoorbeeld Geslaagd of Mislukt. |
Fout | JToken | De HTTP-foutcode. |
TrackedProperties | JToken | Alle bijgehouden eigenschappen die u hebt ingesteld. |
Uitvoer naar uw werkstroom retourneren
Als u uitvoer naar uw werkstroom wilt retourneren, moet u de cmdlet Push-WorkflowOutput gebruiken.
Aangepaste PowerShell-opdrachten
De actie PowerShell-code uitvoeren bevat de volgende aangepaste PowerShell-opdrachten (cmdlets) voor interactie met uw werkstroom en andere bewerkingen in uw werkstroom:
Get-TriggerOutput
Hiermee haalt u de uitvoer op van de trigger van de werkstroom.
Syntaxis
Get-TriggerOutput
Parameters
Geen.
Get-ActionOutput
Haalt de uitvoer van een andere actie in de werkstroom op en retourneert een object met de naam PowershellWorkflowOperationResult.
Syntaxis
Get-ActionOutput [ -ActionName <String> ]
Parameters
Parameter | Type | Description |
---|---|---|
ActionName | String | De naam van de actie in de werkstroom met de uitvoer waarnaar u wilt verwijzen. |
Push-WorkflowOutput
Pusht uitvoer van de PowerShell Code-actie uitvoeren naar uw werkstroom, die elk objecttype kan doorgeven. Als de retourwaarde null is, krijgt u een null-objectfout van de cmdlet.
Notitie
De cmdlets Write-Debug, Write-Host en Write-Output retourneren geen waarden naar uw werkstroom. De retourinstructie retourneert ook geen waarden naar uw werkstroom. U kunt deze cmdlets echter gebruiken om traceringsberichten te schrijven die worden weergegeven in Application Insights. Zie Microsoft.PowerShell.Utility voor meer informatie.
Syntaxis
Push-WorkflowOutput [-Output <Object>] [-Clobber]
Parameters
Parameter | Type | Description |
---|---|---|
Uitvoer | Varieert. | De uitvoer die u wilt teruggaan naar de werkstroom. Deze uitvoer kan elk type hebben. |
Clobber | Varieert. | Een optionele switchparameter die u kunt gebruiken om de eerder gepushte uitvoer te overschrijven. |
Toegang verifiëren en autoriseren met een beheerde identiteit met behulp van PowerShell
Met een beheerde identiteit kan uw logische app-resource en -werkstroom toegang verifiëren en autoriseren tot elke Azure-service en -resource die ondersteuning biedt voor Microsoft Entra-verificatie zonder referenties in uw code op te geven.
Vanuit de actie PowerShell-code uitvoeren kunt u toegang verifiëren en autoriseren met een beheerde identiteit, zodat u acties kunt uitvoeren op andere Azure-resources waarvoor u toegang hebt ingeschakeld. U kunt bijvoorbeeld een virtuele machine opnieuw opstarten of de uitvoeringsdetails van een andere werkstroom voor logische apps ophalen.
Als u de beheerde identiteit wilt gebruiken vanuit de actie PowerShell-code uitvoeren, moet u de volgende stappen uitvoeren:
-
Bekijk de volgende overwegingen in de Azure-doelresource:
Op het tabblad Rol is een rol Inzender meestal voldoende.
Controleer op de pagina Roltoewijzing toevoegen op het tabblad Leden voor de eigenschap Toegang toewijzen of u Beheerde identiteit selecteert.
Nadat u Leden selecteren hebt geselecteerd, selecteert u in het deelvenster Beheerde identiteiten selecteren de beheerde identiteit die u wilt gebruiken.
Neem in de actie PowerShell-code uitvoeren de volgende code op als de eerste instructie:
Connect-AzAccount -Identity
U kunt nu met de Azure-resource werken met behulp van cmdlets en modules.
Het scriptbestand weergeven
Open in Azure Portal de resource voor de logische standaard-app met de gewenste werkstroom.
Selecteer Geavanceerde hulpprogramma's in het resourcemenu van de logische app onder Ontwikkelhulpprogramma's.
Selecteer Go op de pagina Geavanceerde hulpprogramma's, waarmee de KuduPlus-console wordt geopend.
Open het consolemenu Foutopsporing en selecteer CMD.
Ga naar de hoofdlocatie van uw logische app: site/wwwroot
Ga naar de map van uw werkstroom, die het PS1-bestand bevat, langs dit pad: site/wwwroot/{workflow-name}
Selecteer Naast de bestandsnaam Bewerken om het bestand te openen en weer te geven.
Logboeken weergeven in Application Insights
Selecteer in Azure Portal, in het resourcemenu van de logische app, onder Instellingen, Application Insights en selecteer vervolgens uw logische app.
Selecteer Logboeken in het menu Application Insights onder Bewaking.
Maak een query om traceringen of fouten te vinden die afkomstig zijn van de uitvoering van uw werkstroom, bijvoorbeeld:
union traces, errors | project TIMESTAMP, message
Modules
PowerShell-modules zijn zelfstandige, herbruikbare eenheden die verschillende onderdelen bevatten, bijvoorbeeld:
- Cmdlets: afzonderlijke opdrachten die specifieke taken uitvoeren.
- Providers: Toegang tot gegevensarchieven, zoals het register of bestandssysteem, toestaan alsof het stations zijn.
- Functies: Herbruikbare codeblokken die specifieke acties uitvoeren.
- Variabelen: gegevens opslaan voor gebruik in de module.
- Andere typen resources.
Een module organiseert PowerShell-code, zodat u deze eenvoudiger kunt distribueren. U kunt bijvoorbeeld uw eigen modules maken om gerelateerde functionaliteit beter beheersbaar en deelbaar te maken. Met de actie PowerShell-code uitvoeren kunt u zowel openbare als persoonlijke PowerShell-modules importeren.
Openbare modules
Ga naar de PowerShell-galerie om openbaar beschikbare modules te vinden. Een standaardresource voor logische apps kan maximaal 10 openbare modules ondersteunen. Als u een openbare module wilt gebruiken, moet u deze mogelijkheid inschakelen door de volgende stappen uit te voeren:
Selecteer Geavanceerde hulpprogramma's in azure Portal in de resourcemenu's van uw logische app, onder Ontwikkelhulpprogramma's.
Selecteer Go op de pagina Geavanceerde hulpmiddelen.
Selecteer CMD in het consolemenu Foutopsporing op de werkbalk Kudu Plus.
Blader naar het hoofdniveau van uw logische app op C:\home\site\wwwroot met behulp van de mapstructuur of de opdrachtregel.
Open het host.json-bestand van de werkstroom en stel de eigenschap van de beheerde afhankelijkheid in op true, die standaard al is ingesteld.
"managedDependency": { "enabled": true }
Open het bestand requirements.psd1. Neem de naam en versie op voor de gewenste module met behulp van de volgende syntaxis: MajorNumber.* of de exacte moduleversie, bijvoorbeeld:
@{ Az = '1.*' SqlServer = '21.1.18147' }
Overwegingen voor openbare modules
Als u afhankelijkheidsbeheer gebruikt, zijn de volgende overwegingen van toepassing:
Als u modules wilt downloaden, hebben openbare modules toegang nodig tot de PowerShell Gallery.
Beheerde afhankelijkheden ondersteunen momenteel geen modules waarvoor u een licentie moet accepteren, hetzij door de licentie interactief te accepteren of door de optie -AcceptLicense op te geven wanneer u Install-Module uitvoert.
Privémodules
U kunt uw eigen persoonlijke PowerShell-modules genereren. Zie Een PowerShell-scriptmodule schrijven om uw eerste PowerShell-module te maken.
Selecteer Go op de pagina Geavanceerde hulpmiddelen.
Selecteer CMD in het consolemenu Foutopsporing op de werkbalk Kudu Plus.
Blader naar het hoofdniveau van uw logische app op C:\home\site\wwwroot met behulp van de mapstructuur of de opdrachtregel.
Maak een map met de naam Modules.
Maak in de map Modules een submap met dezelfde naam als uw privémodule.
Voeg in uw privémodulemap uw persoonlijke PowerShell-modulebestand toe met de bestandsextensie psm1 . U kunt ook een optioneel PowerShell-manifestbestand met de psd1-bestandsnaamextensie opnemen.
Wanneer u klaar bent, ziet de volledige structuur van het logische app-bestand er ongeveer als volgt uit:
MyLogicApp
-- execute_powershell_script.ps1
-- mytestworkflow.json
Modules
-- MyPrivateModule
--- MyPrivateModule.psd1
--- MyPrivateModule.psm1
-- MyPrivateModule2
--- MyPrivateModule2.psd1
--- MyPrivateModule2.psm1
requirements.psd1
host.json
Compilatiefouten
In deze release bevat de webeditor beperkte IntelliSense-ondersteuning, die nog steeds wordt verbeterd. Eventuele compilatiefouten worden gedetecteerd wanneer u uw werkstroom opslaat en de Azure Logic Apps-runtime compileert uw script. Deze fouten worden weergegeven in de foutenlogboeken van uw logische app via Application Insights.
Runtimefouten
Een werkstroomactie retourneert geen uitvoer.
Zorg ervoor dat u de cmdlet Push-WorkflowOutput gebruikt.
PowerShell Code-actie uitvoeren mislukt: 'De term {some-text} wordt niet herkend...'
Als u onjuist verwijst naar een openbare module in het bestand requirements.psd1 of als uw persoonlijke module niet bestaat in het volgende pad: C:\home\site\wwwroot\Modules{module-name}, krijgt u de volgende fout:
De term {some-text} wordt niet herkend als een naam van een cmdlet, functie, scriptbestand of uitvoerbaar programma. Controleer de spelling van de naam of controleer of een pad is opgenomen, controleer of het pad juist is en probeer het opnieuw.
Notitie
Standaard worden de Az*-modules weergegeven in het bestand requirements.psd1 , maar worden opmerkingen gemaakt bij het maken van bestanden. Wanneer u vanuit de module naar een cmdlet verwijst, moet u de opmerkingen bij de module verwijderen.
De actie PowerShell-code uitvoeren mislukt: 'Kan argument niet binden aan parameter 'Uitvoer' omdat deze null is.
Deze fout treedt op wanneer u een null-object naar de werkstroom probeert te pushen. Controleer of het object dat u verzendt met Push-WorkflowOutput niet null is.