Sdílet prostřednictvím


Přidávání a spouštění skriptů PowerShellu pomocí standardních pracovních postupů v Azure Logic Apps

Platí pro: Azure Logic Apps (Standard)

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 snižuje složitost a náklady, protože můžete spravovat více služeb a zjednodušit vývoj pracovních postupů.

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

  • Integrace s funkcemi PowerShell v Azure Functions, které poskytují výkonné možnosti 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. Získejte bezplatný účet Azure.

  • Prostředek standardní logické aplikace s pracovním postupem, do kterého chcete přidat svůj skript PowerShellu.

    Pracovní postup už musí začínat triggerem. Pro svůj scénář můžete použít libovolný trigger, ale jako příklad tento průvodce používá trigger nazvaný 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.

    Pokud nemáte prostředek aplikace logiky a pracovní postup, vytvořte je teď pomocí následujícího postupu:

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ě rutinního kódu a soustředit se jen na psaní PowerShell kódu. 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 Kudu a zkopírujte skript, který chcete znovu použít v jiných pracovních postupech.

Omezení

Název Omezení Poznámky
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.

Aktualizace verze PowerShellu

Verzi PowerShellu v prostředku aplikace logiky můžete změnit úpravou nastavení aplikace. Před upgradem aplikace si ale projděte následující aspekty:

Poznámka:

Pokud nezadáte verzi PowerShellu, Azure Logic Apps ve výchozím nastavení používá stejnou výchozí verzi jako Azure Functions. PowerShell 7.4 je v současné době obecně dostupný. Další informace o dostupných verzích najdete v příručce pro vývojáře Azure Functions PowerShellu.

Na základě toho, kde chcete aktualizovat verzi PowerShellu, postupujte podle odpovídajících kroků:

  1. V Azure Portal otevřete svůj prostředek Standard pro logické aplikace.

  2. Na bočním panelu prostředku v části Nastavení vyberte Proměnné prostředí.

  3. Na kartě Nastavení aplikace vyberte + Přidat.

  4. V podokně Přidat/upravit nastavení aplikace přidejte následující nové nastavení aplikace:

    Parametr Hodnota Popis
    Jméno LOGIC_APPS_POWERSHELL_VERSION Název nastavení aplikace.
    Hodnota < powershell-version> Verze PowerShellu, aktuálně 7.4.
  5. Až budete hotovi, vyberte Použít. Jakmile se zobrazí upozornění na restartování, vyberte Pokračovat.

    Vaše aplikace logiky se restartuje s aktualizovanou verzí.

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

  1. V Azure Portal otevřete svůj prostředek Standard pro logické aplikace.

  2. Na bočním panelu prostředku v části Pracovní postupy vyberte Pracovní postupy a pak vyberte prázdný pracovní postup.

  3. Na bočním panelu pracovního postupu v části Nástroje vyberte návrháře a otevřete pracovní postup.

  4. Přidejte do pracovního postupu akci Operace vloženého kódu s názvem Spustit kód PowerShellu podle obecných kroků pro přidání akce.

  5. 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
    
  6. 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.

Název Typ Popis
Jméno Řetězec 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 Datum a čas Čas spuštění triggeru nebo akce
Koncový čas Datum a čas Čas ukončení triggeru nebo akce
ScheduledTime Datum a čas Naplánovaný čas spuštění akce nebo triggeru
OriginHistoryName Řetězec Historický název původu pro triggery, které využívají vlastnost splitOn
SourceHistoryName Řetězec Název historie zdroje pro znovu odeslaný spouštěč
Id sledování Řetězec ID sledování operace
Kód Řetězec Stavový kód výsledku
Stav Řetězec Stav spuštění triggeru nebo akce, například Úspěšné nebo Neúspěš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 rutinuPush-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 Řetězec 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 nevracejí hodnoty do vašeho 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. Nastavte spravovanou identitu v aplikaci logiky a udělte spravované identitě přístup k cílovému prostředku Azure. Podrobný postup najdete v tématu Ověřování přístupu a připojení k prostředkům Azure pomocí spravovaných identit.

    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. V Azure Portal otevřete svůj prostředek Standard pro logické aplikace.

  2. Na bočním panelu prostředku 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 Kudu .

  4. Otevřete nabídku konzolyLadě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 s příponou .ps1 v 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 portálu Azure Portal na bočním panelu aplikace logiky v části Monitorování vyberte Application Insights (ne Insights).

  2. Vyberte odkaz na prostředek Application Insights.

  3. Na bočním panelu prostředku Application Insights v části Monitorování vyberte Protokoly.

  4. 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 na bočním panelu 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 v nabídce konzola 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 ManagedDependency.enabled vlastnost na true, která je již nastavena ve výchozím 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 -AcceptLicense možnosti při spuštění modulu 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 na bočních panelech 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 v nabídce konzola 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 .psm1 . Můžete také zahrnout volitelný soubor manifestu PowerShellu s příponou .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 cmdlet 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 cestě C:\home\site\wwwroot\Modules{název_modulu}, zobrazí se následující chyba:

Výraz {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, se Push-WorkflowOutput kterým odesíláte, nemá hodnotu null.