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


PowerShell-szkriptek hozzáadása és futtatása Standard munkafolyamatokkal az Azure Logic Appsben

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

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 csökkenti a bonyolultságot és a költségeket, mivel több szolgáltatást kezelhet, és egyszerűsítheti a munkafolyamat-fejlesztést.

  • 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-függvényeivel, 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. Ingyenes Azure-fiók lekérése.

  • A Standard logikai alkalmazás erőforrása azzal a munkafolyamattal, amelyhez hozzá szeretné adni a PowerShell-szkriptet.

    A munkafolyamatnak már egy eseményindítóval kell kezdődnie. 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 fogadása és a Válasz művelet neve alatt található Kérelem eseményindítót 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.

    Ha nem rendelkezik logikaialkalmazás-erőforrással és munkafolyamattal, az alábbi lépések végrehajtásával hozza létre őket:

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 "sablont" í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 Kudu-konzolon, majd másolja a szkriptet más munkafolyamatokban való újrafelhasználáshoz.

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-verzió frissítése

Az alkalmazásbeállítások szerkesztésével módosíthatja a PowerShell-verziót a logikai alkalmazás erőforrásában. Az alkalmazás frissítése előtt azonban tekintse át a következő szempontokat:

Feljegyzés

Ha nem ad meg PowerShell-verziót, az Azure Logic Apps alapértelmezés szerint ugyanazt az alapértelmezett verziót használja, mint az Azure Functions. Jelenleg a PowerShell 7.4 általánosan elérhető. Az elérhető verziókkal kapcsolatos további információkért tekintse meg az Azure Functions PowerShell fejlesztői útmutatóját.

A PowerShell-verzió frissítésének helyétől függően kövesse a megfelelő lépéseket:

  1. Nyissa meg a Standard logikai alkalmazás erőforrását az Azure Portalon.

  2. Az erőforrás oldalsávjának Beállítások területén válassza a Környezeti változók lehetőséget.

  3. Az Alkalmazásbeállítások lapon válassza a + Hozzáadás lehetőséget.

  4. Az Alkalmazásbeállítás hozzáadása/szerkesztése panelen adja hozzá a következő új alkalmazásbeállítást:

    Paraméter Érték Leírás
    Név LOGIC_APPS_POWERSHELL_VERSION Az alkalmazásbeállítás neve.
    Érték < PowerShell-verzió> A PowerShell jelenleg 7.4-es verziója.
  5. Ha végzett, válassza az Alkalmaz elemet. Amikor megjelenik az újraindítási figyelmeztetés, válassza a Folytatás lehetőséget.

    A logikai alkalmazás a frissített verzióval újraindul.

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

  1. Nyissa meg a Standard logikai alkalmazás erőforrását az Azure Portalon.

  2. Az erőforrás oldalsávJának Munkafolyamatok területén válassza a Munkafolyamatok lehetőséget, majd válassza ki az üres munkafolyamatot.

  3. A munkafolyamat oldalsávjának Eszközök csoportjában válassza ki a tervezőt a munkafolyamat megnyitásához.

  4. Adja hozzá a PowerShell-kód végrehajtása nevű beágyazott kódműveletet a munkafolyamathoz a művelet hozzáadásának általános lépéseit követve.

  5. 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
    
  6. 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 olyan objektumra hivatkozik, amelynek JValue típusa egy összetett objektumon belül van, és ezt az objektumot egy sztringhez adja hozzá, formátumkivételt kap. A hiba elkerülése érdekében használja a következőt ToString(): .

Trigger- és műveletválasz-kimenetek

Az alábbi táblázat azokat a kimeneteket sorolja fel, amelyek a Get-ActionOutput vagy a Get-TriggerOutput hívásakor jönnek létre. A visszatérési érték egy összetett, úgynevezett PowershellWorkflowOperationResultobjektum, amely az alábbi kimeneteket tartalmazza.

Név szerint 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ési 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 futtatásának ütemezett ideje
OriginHistoryName Sztring A tulajdonságot használó splitOn eseményindítók forráselőzményeinek neve
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ódja
TrackedProperties JToken Az ön által beállított követett tulajdonságok

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.

Szemantika

Get-TriggerOutput

Paraméterek

Nincs.

Get-ActionOutput

Lekéri a kimenetet a munkafolyamat egy másik műveletéből, és visszaad egy nevű PowershellWorkflowOperationResultobjektumot.

Szemantika

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, Write-Hostés Write-Output parancsmagok nem ad vissza értékeket a munkafolyamatnak. Az return utasítás 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.

Szemantika

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.
Felülír 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. Állítsa be a felügyelt identitást a logikai alkalmazásban, és adjon hozzáférést a felügyelt identitáshoz a cél Azure-erőforráson. Részletes lépésekért tekintse meg az Azure-erőforrások hozzáférésének és kapcsolatainak hitelesítése felügyelt identitásokkal című témakört.

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

    • A Szerepkör lapon általában elegendő közreműködőiszerepkö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. Nyissa meg a Standard logikai alkalmazás erőforrását az Azure Portalon.

  2. Az erőforrás oldalsávjának 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 Kudu-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 a .ps1 kiterjesztésű fájlt tartalmazza 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 oldalsávján, a Figyelés területen válassza az Application Insights (nem az Elemzések) lehetőséget.

  2. Válassza ki az Application Insights-erőforrásra mutató hivatkozást.

  3. Az Application Insights erőforrás oldalsávjának Figyelés területén válassza a Naplók lehetőséget.

  4. 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 oldalsávján, 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 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 ManagedDependency.enabled tulajdonságot trueaz alapértelmezett beállításra.

    "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 -AcceptLicenseInstall-Module futtatásakor történő beállítással.

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-oldalsávján, 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 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 kiterjesztéssel. Egy választható PowerShell-jegyzékfájlt is hozzáadhat a .psd1 kiterjeszté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 C:\home\site\wwwroot\Modules{module-name} elérési úton, 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 ha tartalmazott egy elérési utat, ellenőrizze, hogy helyes-e az elérési út, és 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 az elküldött Push-WorkflowOutput objektum nem null értékű-e.