Sdílet prostřednictvím


Přidání a spuštění kódu skriptu PowerShellu ve standardních pracovních postupech pro Azure Logic Apps (Preview)

Platí pro: Azure Logic Apps (Standard)

Poznámka:

Tato funkce je ve verzi Preview a podléhá dodatečným podmínkám použití pro microsoft Azure Preview.

Pokud chcete provádět vlastní úlohy integrace vložené s pracovním postupem Standard v Azure Logic Apps, můžete přímo přidat a spustit kód PowerShellu z pracovního postupu. Pro tuto úlohu použijte akci Vložený kód s názvem Spustit kód PowerShellu. Tato akce vrátí výsledky z kódu PowerShellu, abyste tento výstup mohli použít v následných akcích pracovního postupu.

Tato funkce poskytuje následující výhody:

  • Napište vlastní skripty v návrháři pracovních postupů, abyste mohli řešit složité problémy s integrací. Nejsou potřeba žádné jiné plány služeb.

    Tato výhoda zjednodušuje vývoj pracovních postupů a snižuje složitost a náklady při správě dalších služeb.

  • Vygenerujte vyhrazený soubor kódu, který poskytuje přizpůsobený skriptovací prostor v rámci pracovního postupu.

  • Integrace s Azure Functions PowerShell Functions, která poskytuje výkonné funkce a dědičnost pro pokročilé provádění úloh.

  • Nasaďte skripty společně s pracovními postupy.

Tento průvodce ukazuje, jak přidat akci do pracovního postupu a přidat kód PowerShellu, který chcete spustit.

Požadavky

  • Účet a předplatné Azure. Pokud předplatné nemáte, zaregistrujte si bezplatný účet Azure.

  • Pracovní postup standardní aplikace logiky, do kterého chcete přidat skript PowerShellu. Pracovní postup už musí začínat triggerem. Další informace najdete v tématu Vytvoření ukázkových pracovních postupů standardní aplikace logiky.

    Pro svůj scénář můžete použít libovolnou aktivační událost, ale jako příklad tato příručka používá trigger požadavku s názvem Při přijetí požadavku HTTP a také akci Odpověď. Pracovní postup se spustí, když jiná aplikace nebo pracovní postup odešle požadavek na adresu URL koncového bodu triggeru. Ukázkový skript vrátí výsledky spuštění kódu jako výstup, který můžete použít v následných akcích.

Důležité informace

  • Azure Portal uloží váš skript jako soubor skriptu PowerShellu (.ps1) ve stejné složce jako soubor workflow.json , který uloží definici JSON pro váš pracovní postup a nasadí ho do prostředku aplikace logiky spolu s definicí pracovního postupu.

    Formát souboru .ps1 umožňuje psát méně "často používané" a soustředit se jen na psaní kódu PowerShellu. Pokud akci přejmenujete, soubor se také přejmenuje, ale ne naopak. Pokud soubor přímo přejmenujete, přejmenovaná verze přepíše předchozí verzi. Pokud název akce a názvy souborů neodpovídají, akce nemůže soubor najít a pokusí se vytvořit nový prázdný soubor.

  • Skript je místní pro pracovní postup. Pokud chcete použít stejný skript v jiných pracovních postupech, zobrazte soubor skriptu v konzole KuduPlus a zkopírujte skript, který chcete použít v jiných pracovních postupech.

Omezení

Název Omezení Notes
Doba trvání spuštění skriptu 10 minut Pokud máte scénáře, které potřebují delší dobu trvání, použijte možnost zpětné vazby k produktu a poskytněte další informace o vašich potřebách.
Velikost výstupu 100 MB Velikost výstupu závisí na limitu velikosti výstupu pro akce, což je obecně 100 MB.

Přidání akce Spustit kód PowerShellu

  1. Na webu Azure Portal otevřete prostředek aplikace logiky Standard a pracovní postup v návrháři.

  2. V návrháři postupujte podle těchto obecných kroků a přidejte do pracovního postupu akci Operace vloženého kódu s názvem Spustit kód PowerShellu.

  3. Jakmile se otevře podokno s informacemi o akci, aktualizujte na kartě Parametry v poli Soubor kódu předem vyplněný ukázkový kód vlastním kódem.

    Následující příklad ukazuje kartu Parametry akce s kódem ukázkového skriptu:

    Snímek obrazovky s webem Azure Portal, návrhářem standardních pracovních postupů, triggerem požadavku, spuštěním akce kódu PowerShellu s otevřeným podoknem informací a akcí Odpovědi Podokno informací ukazuje ukázkový skript PowerShellu.

    Následující příklad ukazuje vzorový kód skriptu:

    # 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
    

    Následující příklad ukazuje vlastní ukázkový skript:

    $action = Get-TriggerOutput
    $results = "Hello from PowerShell!"
    Push-WorkflowOutput -Output $results
    
  4. Po dokončení uložte pracovní postup.

Po spuštění pracovního postupu můžete zkontrolovat výstup pracovního postupu v Application Insights, pokud je povolený. Další informace najdete v tématu Zobrazení výstupu v Application Insights.

Přístup k triggerům pracovního postupu a výstupům akcí ve skriptu

Výstupní hodnoty z triggeru a předchozích akcí se vrátí pomocí vlastního objektu, který má více parametrů. Pokud chcete získat přístup k těmto výstupům a ujistěte se, že vracíte požadovanou hodnotu, použijte rutiny Get-TriggerOutput, Get-ActionOutput a Push-WorkflowOutput a všechny příslušné parametry popsané v následující tabulce, například:

$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

Poznámka:

Pokud v PowerShellu odkazujete na objekt s typem JValue uvnitř komplexního objektu a tento objekt přidáte do řetězce, získáte výjimku formátu. Chcete-li se této chybě vyhnout, použijte toString().

Výstupy odpovědi triggeru a akce

Následující tabulka uvádí výstupy, které se generují při volání Get-ActionOutput nebo Get-TriggerOutput. Návratová hodnota je komplexní objekt s názvem PowershellWorkflowOperationResult, který obsahuje následující výstupy.

Name Typ Popis
Jméno String Název triggeru nebo akce.
Vstupy JToken Vstupní hodnoty předané do triggeru nebo akce.
Výstupy JToken Výstupy z spouštěné aktivační události nebo akce.
Počáteční čas DateTime Čas spuštění triggeru nebo akce.
Koncový čas DateTime Koncový čas triggeru nebo akce.
ScheduledTime DateTime Naplánovaný čas spuštění triggeru nebo akce nebo triggeru
OriginHistoryName String Název historie původu pro triggery s povolenou možností Split-On .
SourceHistoryName String Název historie zdroje pro znovu odslaný trigger
Id sledování String ID sledování operace.
Kód String Stavový kód výsledku.
Stav Řetězcové Stav spuštění triggeru nebo akce, například Úspěch nebo Selhání.
Chyba JToken Kód chyby HTTP.
TrackedProperties JToken Všechny sledované vlastnosti, které jste nastavili.

Vrácení výstupů do pracovního postupu

Pokud chcete vrátit všechny výstupy do pracovního postupu, musíte použít rutinu Push-WorkflowOutput.

Vlastní příkazy PowerShellu

Akce Spustit kód PowerShellu zahrnuje následující vlastní příkazy PowerShellu (rutiny) pro interakci s pracovním postupem a další operace v pracovním postupu:

Get-TriggerOutput

Získá výstup z triggeru pracovního postupu.

Syntaxe

Get-TriggerOutput

Parametry

Žádná

Get-ActionOutput

Získá výstup z jiné akce v pracovním postupu a vrátí objekt s názvem PowershellWorkflowOperationResult.

Syntaxe

Get-ActionOutput [ -ActionName <String> ]

Parametry

Parametr Typ Popis
ActionName String Název akce v pracovním postupu s výstupem, na který chcete odkazovat.

Push-WorkflowOutput

Nasdílí výstup z akce Spustit kód PowerShellu do pracovního postupu, který může předat jakýkoli typ objektu. Pokud je vrácená hodnota null, z rutiny se zobrazí chyba objektu null.

Poznámka:

Rutiny Write-Debug, Write-Host a Write-Output nevrací hodnoty do pracovního postupu. Příkaz return také nevrací hodnoty do pracovního postupu. Tyto rutiny ale můžete použít k zápisu trasovacích zpráv, které se zobrazí v Application Insights. Další informace naleznete v tématu Microsoft.PowerShell.Utility.

Syntaxe

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

Parametry

Parametr Typ Popis
Výstup Liší se. Výstup, který chcete vrátit do pracovního postupu. Tento výstup může mít libovolný typ.
Udeřit Liší se. Volitelný parametr přepínače, který můžete použít k přepsání dříve nabízeného výstupu.

Ověřování a autorizace přístupu pomocí spravované identity pomocí PowerShellu

Pomocí spravované identity může prostředek aplikace logiky a pracovní postup ověřovat a autorizovat přístup k libovolné službě a prostředku Azure, které podporují ověřování Microsoft Entra bez zahrnutí přihlašovacích údajů do kódu.

V rámci akce Spustit kód PowerShellu můžete ověřit a autorizovat přístup pomocí spravované identity, abyste mohli provádět akce s jinými prostředky Azure, ve kterých jste povolili přístup. Můžete například restartovat virtuální počítač nebo získat podrobnosti o spuštění jiného pracovního postupu aplikace logiky.

Pokud chcete použít spravovanou identitu z akce Spustit kód PowerShellu, musíte postupovat takto:

  1. Pomocí těchto kroků nastavte spravovanou identitu v aplikaci logiky a udělte spravované identitě přístup k cílovému prostředku Azure.

    V cílovém prostředku Azure si projděte následující aspekty:

    • Na kartě Role je obvykle dostatečná role Přispěvatel.

    • Na stránce Přidat přiřazení role na kartě Členové u vlastnosti Přiřadit přístup k vlastnosti se ujistěte, že jste vybrali spravovanou identitu.

    • Po výběru možnosti Vybrat členy vyberte v podokně Vybrat spravované identity spravovanou identitu, kterou chcete použít.

  2. Do akce Spustit kód PowerShellu zahrňte jako první příkaz následující kód:

    Connect-AzAccount -Identity
    
  3. Teď můžete pracovat s prostředkem Azure pomocí rutin a modulů.

Zobrazení souboru skriptu

  1. Na webu Azure Portal otevřete prostředek aplikace logiky Standard, který má požadovaný pracovní postup.

  2. V nabídce prostředků aplikace logiky v části Vývojové nástroje vyberte Rozšířené nástroje.

  3. Na stránce Rozšířené nástroje vyberte Přejít, čímž otevřete konzolu KuduPlus.

  4. Otevřete nabídku konzoly Ladění a vyberte CMD.

  5. Přejděte do kořenového umístění aplikace logiky: web/wwwroot

  6. Přejděte do složky pracovního postupu, která obsahuje soubor .ps1, na této cestě: site/wwwroot/{workflow-name}

  7. Vedle názvu souboru vyberte Upravit , abyste soubor otevřeli a zobrazili.

Zobrazení protokolů v Application Insights

  1. Na webu Azure Portal v nabídce prostředků aplikace logiky v části Nastavení vyberte Application Insights a pak vyberte aplikaci logiky.

  2. V nabídce Application Insights v části Monitorování vyberte Protokoly.

  3. Vytvořte dotaz pro vyhledání trasování nebo chyb při provádění pracovního postupu, například:

    union traces, errors
    | project TIMESTAMP, message
    

Moduly

Moduly PowerShellu jsou samostatné opakovaně použitelné jednotky, které zahrnují různé komponenty, například:

  • Rutiny: Jednotlivé příkazy, které provádějí konkrétní úlohy.
  • Poskytovatelé: Povolte přístup k úložištům dat, jako je registr nebo systém souborů, jako by šlo o jednotky.
  • Funkce: Opakovaně použitelné bloky kódu, které provádějí konkrétní akce.
  • Proměnné: Uložte data pro použití v rámci modulu.
  • Další typy prostředků.

Modul uspořádá kód PowerShellu, což usnadňuje distribuci. Můžete například vytvořit vlastní moduly pro zabalení a zajistit, aby související funkce byly lépe spravovatelné a sdíletelné. Akce Spustit kód PowerShellu umožňuje importovat veřejné i privátní moduly PowerShellu.

Veřejné moduly

Veřejně dostupné moduly najdete v galerii PowerShellu. Prostředek standardní aplikace logiky může podporovat až 10 veřejných modulů. Pokud chcete použít jakýkoli veřejný modul, musíte tuto funkci povolit pomocí následujících kroků:

  1. Na webu Azure Portal v nabídkách prostředků aplikace logiky v části Vývojové nástroje vyberte Rozšířené nástroje.

  2. Na stránce Rozšířené nástroje vyberte Přejít.

  3. Na panelu nástrojů Kudu Plus v nabídce konzoly Ladění vyberte CMD.

  4. Přejděte na kořenovou úroveň aplikace logiky na adrese C:\home\site\wwwroot pomocí struktury adresáře nebo příkazového řádku.

  5. Otevřete soubor host.json pracovního postupu a nastavte vlastnost spravované závislosti na hodnotu true, která je už ve výchozím nastavení nastavená.

    "managedDependency": {
        "enabled": true
    }
    
  6. Otevřete soubor s názvem requirements.psd1. Zadejte název a verzi požadovaného modulu pomocí následující syntaxe: MajorNumber.* nebo přesnou verzi modulu, například:

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

Důležité informace o veřejných modulech

Pokud používáte správu závislostí, platí následující aspekty:

  • Ke stažení modulů vyžadují veřejné moduly přístup k Galerie prostředí PowerShell.

  • Spravované závislosti v současné době nepodporují moduly, které vyžadují přijetí licence, a to buď interaktivním přijetím licence, nebo poskytnutím možnosti -AcceptLicense při spuštění install-Module.

Privátní moduly

Můžete vygenerovat vlastní privátní moduly PowerShellu. Pokud chcete vytvořit první modul PowerShellu, přečtěte si téma Vytvoření modulu skriptu PowerShellu.

  1. Na webu Azure Portal v nabídce prostředků aplikace logiky v části Vývojové nástroje vybere rozšířené nástroje.

  2. Na stránce Rozšířené nástroje vyberte Přejít.

  3. Na panelu nástrojů Kudu Plus v nabídce konzoly Ladění vyberte CMD.

  4. Přejděte na kořenovou úroveň aplikace logiky na adrese C:\home\site\wwwroot pomocí struktury adresáře nebo příkazového řádku.

  5. Vytvořte složku s názvem Modules.

  6. Ve složce Modules vytvořte podsložku se stejným názvem jako váš privátní modul.

  7. Do složky privátního modulu přidejte soubor privátního modulu PowerShellu s příponou názvu souboru psm1 . Můžete také zahrnout volitelný soubor manifestu PowerShellu s příponou názvu souboru psd1 .

Po dokončení se kompletní struktura souboru aplikace logiky zobrazí podobně jako v následujícím příkladu:

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

Chyby kompilace

V této verzi webový editor zahrnuje omezenou podporu Technologie IntelliSense, která se stále vylepšuje. Všechny chyby kompilace se zjistí při uložení pracovního postupu a modul runtime Azure Logic Apps zkompiluje váš skript. Tyto chyby se zobrazují v protokolech chyb vaší aplikace logiky prostřednictvím Application Insights.

Chyby za běhu

Akce pracovního postupu nevrací žádný výstup.

Ujistěte se, že používáte rutinu Push-WorkflowOutput .

Provedení akce kódu PowerShellu se nezdaří: Výraz {some-text} se nerozpoznal...

Pokud nesprávně odkazujete na veřejný modul v souboru requirements.psd1 nebo pokud váš soukromý modul neexistuje v následující cestě: C:\home\site\wwwroot\Modules{název_modulu}, zobrazí se následující chyba:

Termín {some-text} není rozpoznán jako název rutiny, funkce, souboru skriptu nebo spustitelného programu. Zkontrolujte pravopis názvu nebo jestli byla zahrnuta cesta, ověřte správnost cesty a zkuste to znovu.

Poznámka:

Moduly Az* se ve výchozím nastavení zobrazují v souboru requirements.psd1 , ale zakomentují se při vytváření souboru. Při odkazování na rutinu z modulu nezapomeňte modul zrušit.

Provedení akce kódu PowerShellu selže: Nelze vytvořit vazbu argumentu s parametrem Output, protože má hodnotu null.

K této chybě dochází, když se pokusíte odeslat objekt null do pracovního postupu. Ověřte, jestli objekt, který odesíláte, nemá hodnotu null.