Megosztás a következőn keresztül:


PowerShell-szkriptkód hozzáadása és futtatása az Azure Logic Apps standard munkafolyamataiban (előzetes verzió)

A következőkre vonatkozik: Azure Logic Apps (Standard)

Feljegyzés

Ez a funkció előzetes verzióban érhető el, és a Microsoft Azure előzetes verziójának kiegészítő használati feltételei vonatkoznak.

Ha egyéni integrációs feladatokat szeretne végrehajtani a Standard munkafolyamattal az Azure Logic Appsben, közvetlenül hozzáadhat és futtathat PowerShell-kódot a munkafolyamatból. Ehhez a feladathoz használja a PowerShell-kód végrehajtása nevű Beágyazott kód műveletet. Ez a művelet visszaadja a PowerShell-kód eredményeit, hogy ezt a kimenetet a munkafolyamat későbbi műveleteiben is használni tudja.

Ez a funkció a következő előnyöket nyújtja:

  • Saját szkripteket írhat a munkafolyamat-tervezőben, így összetett integrációs kihívásokat oldhat meg. Nincs szükség más szolgáltatási csomagokra.

    Ez az előny leegyszerűsíti a munkafolyamat-fejlesztést, és több szolgáltatás kezelésével csökkenti a bonyolultságot és a költségeket.

  • Hozzon létre egy dedikált kódfájlt, amely személyre szabott szkriptelési helyet biztosít a munkafolyamaton belül.

  • Integrálható az Azure Functions PowerShell Functions szolgáltatással, amely hatékony funkciókat és öröklést biztosít a speciális feladatvégrehajtáshoz.

  • Szkriptek üzembe helyezése a munkafolyamatok mellett.

Ez az útmutató bemutatja, hogyan vehet fel műveletet a munkafolyamatba, és hogyan veheti fel a futtatni kívánt PowerShell-kódot.

Előfeltételek

  • Azure-fiók és -előfizetés. Ha még nincs előfizetése, regisztráljon egy ingyenes Azure-fiókra.

  • A Standard logikai alkalmazás munkafolyamata, amelyben fel szeretné venni a PowerShell-szkriptet. A munkafolyamatnak már egy eseményindítóval kell kezdődnie. További információ: Példa standard logikai alkalmazás munkafolyamatainak létrehozása.

    A forgatókönyvhöz bármilyen eseményindítót használhat, de ez az útmutató például a HTTP-kérések érkezésekor elnevezett Kérelem eseményindítót és a Válasz műveletet használja. A munkafolyamat akkor fut, amikor egy másik alkalmazás vagy munkafolyamat kérést küld az eseményindító végpontJÁNAK URL-címére. A mintaszkript a kódvégrehajtás eredményeit adja vissza kimenetként, amelyet a későbbi műveletekben használhat.

Megfontolások

  • Az Azure Portal PowerShell-szkriptfájlként (.ps1) menti a szkriptet a workflow.json fájllal megegyező mappába, amely a munkafolyamat JSON-definícióját tárolja, és üzembe helyezi a fájlt a logikai alkalmazás erőforrásában a munkafolyamat-definícióval együtt.

    A .ps1 fájlformátum lehetővé teszi, hogy kevesebb "kazánlemezt" írjon, és csak a PowerShell-kód írására összpontosítson. Ha átnevezi a műveletet, a fájl is átnevezve lesz, de nem fordítva. Ha közvetlenül átnevezi a fájlt, az átnevezett verzió felülírja az előző verziót. Ha a művelet neve és a fájlnevek nem egyeznek, a művelet nem találja a fájlt, és megpróbál létrehozni egy új üres fájlt.

  • A szkript helyi a munkafolyamatban. Ha ugyanazt a szkriptet más munkafolyamatokban szeretné használni, tekintse meg a szkriptfájlt a KuduPlus konzolon, majd másolja a szkriptet más munkafolyamatokban való újrahasználatra.

Korlátozások

Név szerint Határ Jegyzetek
Szkriptfuttatás időtartama 10 perc Ha olyan forgatókönyvei vannak, amelyek hosszabb időtartamot igényelnek, a termékvisszajelzési lehetőséggel további információt kaphat az igényeiről.
Kimeneti méret 100 MB A kimeneti méret a műveletek kimeneti méretkorlátjától függ, amely általában 100 MB.

A PowerShell-kód végrehajtása művelet hozzáadása

  1. Az Azure Portalon nyissa meg a standard logikai alkalmazás erőforrását és munkafolyamatát a tervezőben.

  2. A tervezőben az alábbi általános lépéseket követve adja hozzá a PowerShell-kód végrehajtása nevű beágyazott kódműveletet a munkafolyamathoz.

  3. A műveletinformációs panel megnyitása után a Paraméterek lap Kódfájl mezőjében frissítse az előre feltöltött mintakódot a saját kódjával.

    Az alábbi példa a művelet Paraméterek lapját mutatja be a példaszkript kódjával:

    Képernyőkép az Azure Portalról, a Standard munkafolyamat-tervezőről, a Kérelem eseményindítójáról, a PowerShell-kód végrehajtásáról az információs panel megnyitásával és a Válasz művelettel. Az Információs panel a PowerShell-példaszkriptet jeleníti meg.

    Az alábbi példa a példaszkriptkódot mutatja be:

    # 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
    

    Az alábbi példa egy egyéni példaszkriptet mutat be:

    $action = Get-TriggerOutput
    $results = "Hello from PowerShell!"
    Push-WorkflowOutput -Output $results
    
  4. Ha végzett, mentse a munkafolyamatot.

A munkafolyamat futtatása után áttekintheti a munkafolyamat kimenetét az Application Insightsban, ha engedélyezve van. További információ: Kimenet megtekintése az Application Insightsban.

Munkafolyamat-eseményindítók és műveleti kimenetek elérése a szkriptben

Az eseményindító és az előző műveletek kimeneti értékeit a rendszer egy egyéni objektummal adja vissza, amely több paraméterrel rendelkezik. A kimenetek eléréséhez és a kívánt érték visszaadásához használja a Get-TriggerOutput, a Get-ActionOutput és a Push-WorkflowOutput parancsmagokat, valamint az alábbi táblázatban leírt megfelelő paramétereket, például:

$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

Feljegyzés

Ha a PowerShellben egy összetett objektumon belül JValue típusú objektumra hivatkozik, és ezt az objektumot egy sztringhez adja hozzá, formátumkivételt kap. A hiba elkerülése érdekében használja a ToString()-t.

Trigger- és műveletválasz-kimenetek

Az alábbi táblázat a Get-ActionOutput vagy a Get-TriggerOutput hívásakor létrehozott kimeneteket sorolja fel. A visszatérési érték egy PowershellWorkflowOperationResult nevű összetett objektum, amely az alábbi kimeneteket tartalmazza.

Név Típus Leírás
Név Sztring Az eseményindító vagy művelet neve.
Bemenetek JToken Az eseményindítónak vagy műveletnek átadott bemeneti értékek.
Kimenetek JToken A végrehajtott eseményindító vagy művelet kimenetei.
StartTime Dátum/idő Az eseményindító vagy művelet kezdő időpontja.
EndTime Dátum/idő Az eseményindító vagy művelet befejezési ideje.
ScheduledTime Dátum/idő Az eseményindító vagy művelet vagy eseményindító futtatásának ütemezett ideje.
OriginHistoryName Sztring Az eseményindítók forráselőzményeinek neve engedélyezve van a Felosztás beállítással .
SourceHistoryName Sztring Az újraküldett eseményindító forráselőzményeinek neve.
TrackingId Sztring A műveletkövetés azonosítója.
Kód Sztring Az eredmény állapotkódja.
Állapot Sztring Az eseményindító vagy művelet futtatási állapota, például sikeres vagy sikertelen.
Hiba JToken A HTTP-hibakód.
TrackedProperties JToken A beállított összes korrektúratulajdonság.

Kimenetek visszaadása a munkafolyamatba

Ha bármilyen kimenetet vissza szeretne adni a munkafolyamatnak, a Push-WorkflowOutput parancsmagot kell használnia.

Egyéni PowerShell-parancsok

A PowerShell-kód végrehajtása művelet az alábbi egyéni PowerShell-parancsokat (parancsmagokat) tartalmazza a munkafolyamat és a munkafolyamat egyéb műveleteinek kezelésére:

Get-TriggerOutput

Lekéri a kimenetet a munkafolyamat eseményindítójából.

Syntax

Get-TriggerOutput

Paraméterek

Nincs.

Get-ActionOutput

Lekéri a kimenetet a munkafolyamat egy másik műveletéből, és egy PowershellWorkflowOperationResult nevű objektumot ad vissza.

Syntax

Get-ActionOutput [ -ActionName <String> ]

Paraméterek

Paraméter Típus Leírás
ActionName Sztring A munkafolyamatban a hivatkozni kívánt kimenettel rendelkező művelet neve.

Push-WorkflowOutput

Leküldi a kimenetet a PowerShell-kód végrehajtása műveletből a munkafolyamatba, amely bármilyen objektumtípust átadhat. Ha a visszatérési érték null, null objektumhiba jelenik meg a parancsmagból.

Feljegyzés

A Write-Debug, a Write-Host és a Write-Output parancsmagok nem adnak vissza értékeket a munkafolyamatnak. A visszatérési utasítás szintén nem ad vissza értékeket a munkafolyamatnak. Ezek a parancsmagok azonban az Application Insightsban megjelenő nyomkövetési üzenetek írására használhatók. További információ: Microsoft.PowerShell.Utility.

Syntax

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

Paraméterek

Paraméter Típus Leírás
Hozam Változik. A munkafolyamathoz visszatérni kívánt kimenet. Ennek a kimenetnek bármilyen típusa lehet.
Clobber Változik. Választható kapcsolóparaméter, amellyel felülbírálhatja a korábban leküldéses kimenetet.

Hozzáférés hitelesítése és engedélyezése felügyelt identitással a PowerShell használatával

A felügyelt identitással a logikai alkalmazás erőforrása és munkafolyamata hitelesítheti és engedélyezheti a Hozzáférést minden olyan Azure-szolgáltatáshoz és erőforráshoz, amely támogatja a Microsoft Entra-hitelesítést anélkül, hogy hitelesítő adatokat tartalmaz a kódban.

A PowerShell-kód végrehajtása műveleten belül hitelesítheti és engedélyezheti a hozzáférést egy felügyelt identitással, hogy műveleteket hajthasson végre más Azure-erőforrásokon, ahol engedélyezte a hozzáférést. Újraindíthat például egy virtuális gépet, vagy lekérheti egy másik logikai alkalmazás munkafolyamatának futtatási adatait.

Ha a felügyelt identitást a PowerShell-kód végrehajtása műveletből szeretné használni, kövesse az alábbi lépéseket:

  1. Az alábbi lépéseket követve beállíthatja a felügyelt identitást a logikai alkalmazásban, és hozzáférést adhat a felügyelt identitáshoz a cél Azure-erőforráson.

    A cél Azure-erőforráson tekintse át a következő szempontokat:

    • A Szerepkör lapon általában elegendő közreműködői szerepkör.

    • A Szerepkör-hozzárendelés hozzáadása lap Tagok lapján, a Hozzáférés hozzárendelése tulajdonságnál győződjön meg arról, hogy a felügyelt identitást választja.

    • Miután kiválasztotta a Tagok kijelölése lehetőséget, a Felügyelt identitások kiválasztása panelen válassza ki a használni kívánt felügyelt identitást.

  2. A PowerShell-kód végrehajtása műveletben első utasításként adja meg a következő kódot:

    Connect-AzAccount -Identity
    
  3. Mostantól parancsmagokkal és modulokkal dolgozhat az Azure-erőforrással.

A szkriptfájl megtekintése

  1. Az Azure Portalon nyissa meg a standard logikai alkalmazás erőforrását, amely rendelkezik a kívánt munkafolyamatokkal.

  2. A logikai alkalmazás erőforrásmenüjének Fejlesztési eszközök csoportjában válassza a Speciális eszközök lehetőséget.

  3. A Speciális eszközök lapon válassza az Ugrás lehetőséget, amely megnyitja a KuduPlus-konzolt.

  4. Nyissa meg a Hibakeresési konzol menüjét, és válassza a CMD lehetőséget.

  5. Nyissa meg a logikai alkalmazás gyökérhelyét: site/wwwroot

  6. Nyissa meg a munkafolyamat mappáját, amely tartalmazza a .ps1 fájlt a következő elérési út mentén: site/wwwroot/{workflow-name}

  7. A fájl neve mellett válassza a Szerkesztés lehetőséget a fájl megnyitásához és megtekintéséhez.

Naplók megtekintése az Application Insightsban

  1. Az Azure Portalon, a logikai alkalmazás erőforrásmenüjének Beállítások területén válassza az Application Insights lehetőséget, majd válassza ki a logikai alkalmazást.

  2. Az Application Insights menü Figyelés területén válassza a Naplók lehetőséget.

  3. Hozzon létre egy lekérdezést a munkafolyamat végrehajtásából származó nyomkövetések vagy hibák megkereséséhez, például:

    union traces, errors
    | project TIMESTAMP, message
    

Modulok

A PowerShell-modulok önálló, újrafelhasználható egységek, amelyek különböző összetevőket tartalmaznak, például:

  • Parancsmagok: Adott feladatokat végrehajtó egyéni parancsok.
  • Szolgáltatók: Engedélyezze az adattárakhoz, például a beállításjegyzékhez vagy a fájlrendszerhez való hozzáférést, mintha meghajtók lennének.
  • Függvények: Adott műveleteket végrehajtó újrahasználható kódblokkok.
  • Változók: Adatok tárolása a modulon belül.
  • Egyéb típusú erőforrások.

A modul rendszerezi a PowerShell-kódot, így könnyebben terjeszthető. Létrehozhat például saját modulokat a csomagok csomagolásához, valamint a kapcsolódó funkciók kezelhetőbbé és megoszthatóbbá tétele érdekében. A PowerShell-kód végrehajtása művelet lehetővé teszi a nyilvános és a privát PowerShell-modulok importálását.

Nyilvános modulok

A nyilvánosan elérhető modulok megkereséséhez látogasson el a PowerShell-gyűjteménybe. Egy standard logikai alkalmazás erőforrása legfeljebb 10 nyilvános modult támogat. Bármely nyilvános modul használatához engedélyeznie kell ezt a képességet az alábbi lépések végrehajtásával:

  1. Az Azure Portalon, a logikai alkalmazás erőforrásmenüiben, a Fejlesztési eszközök területen válassza a Speciális eszközök lehetőséget.

  2. A Speciális eszközök lapon válassza az Ugrás lehetőséget.

  3. A Kudu Plus eszköztár hibakeresési konzol menüjében válassza a CMD lehetőséget.

  4. Keresse meg a logikai alkalmazás gyökérszintjét a C:\home\site\wwwroot helyen a címtárstruktúra vagy a parancssor használatával.

  5. Nyissa meg a munkafolyamat host.json fájlját, és állítsa a felügyelt függőség tulajdonságot igaz értékre, amely alapértelmezés szerint már be van állítva.

    "managedDependency": {
        "enabled": true
    }
    
  6. Nyissa meg a requirements.psd1 nevű fájlt. Adja meg a kívánt modul nevét és verzióját a következő szintaxissal: MajorNumber.* vagy a modul pontos verziója, például:

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

A nyilvános modulok szempontjai

Ha függőségkezelést használ, az alábbi szempontokat kell figyelembe vennie:

  • A modulok letöltéséhez a nyilvános moduloknak hozzá kell férniük a PowerShell-galéria.

  • A felügyelt függőségek jelenleg nem támogatják azokat a modulokat, amelyek megkövetelik a licenc elfogadását, akár a licenc interaktív elfogadásával, akár az -AcceptLicense beállítással az Install-Module futtatásakor.

Privát modulok

Létrehozhat saját privát PowerShell-modulokat. Az első PowerShell-modul létrehozásához tekintse meg a PowerShell-szkriptmodul írása című témakört.

  1. Az Azure Portalon, a logikai alkalmazás erőforrás menüjében, a Fejlesztési eszközök csoportban válassza a Speciális eszközök lehetőséget.

  2. A Speciális eszközök lapon válassza az Ugrás lehetőséget.

  3. A Kudu Plus eszköztár hibakeresési konzol menüjében válassza a CMD lehetőséget.

  4. Keresse meg a logikai alkalmazás gyökérszintjét a C:\home\site\wwwroot helyen a címtárstruktúra vagy a parancssor használatával.

  5. Hozzon létre egy Modulok nevű mappát.

  6. A Modulok mappában hozzon létre egy, a privát modul nevével megegyező nevű almappát.

  7. A privát modul mappájában adja hozzá a privát PowerShell-modulfájlt a psm1 fájlnévkiterjesztéssel. Egy választható PowerShell-jegyzékfájlt is felvehet a psd1 fájlnévkiterjesztéssel.

Ha elkészült, a logikai alkalmazás teljes fájlstruktúrája az alábbi példához hasonlóan jelenik meg:

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

Fordítási hibák

Ebben a kiadásban a webes szerkesztő korlátozott IntelliSense-támogatást tartalmaz, amely még fejlesztés alatt áll. A rendszer fordítási hibákat észlel a munkafolyamat mentésekor, és az Azure Logic Apps-futtatókörnyezet lefordítja a szkriptet. Ezek a hibák megjelennek a logikai alkalmazás hibanaplóiban az Application Insightson keresztül.

Futtatókörnyezeti hibák

A munkafolyamat-műveletek nem adnak vissza kimenetet.

Győződjön meg arról, hogy a Push-WorkflowOutput parancsmagot használja.

A PowerShell-kód végrehajtása sikertelen: "A(z) "{some-text}" kifejezés nem ismerhető fel..."

Ha helytelenül hivatkozik egy nyilvános modulra a requirements.psd1 fájlban, vagy ha a privát modul nem létezik a következő elérési úton: C:\home\site\wwwroot\Modules{module-name}, a következő hibaüzenet jelenik meg:

A(z) "{some-text}" kifejezés nem ismerhető fel parancsmag, függvény, szkriptfájl vagy végrehajtható program neveként. Ellenőrizze a név helyesírását, vagy hogy szerepel-e az elérési út, ellenőrizze, hogy helyes-e az elérési út, majd próbálkozzon újra.

Feljegyzés

Alapértelmezés szerint az Az* modulok megjelennek a requirements.psd1 fájlban, de a fájl létrehozásakor megjegyzést fűznek hozzá. Amikor a modulból származó parancsmagra hivatkozik, mindenképpen bontsa ki a modult.

A PowerShell-kód végrehajtása sikertelen: "Nem lehet argumentumot kötni a "Kimenet" paraméterhez, mert null.

Ez a hiba akkor fordul elő, ha null értékű objektumot próbál leküldni a munkafolyamatba. Ellenőrizze, hogy a Push-WorkflowOutputtal küldött objektum nem null értékű-e.