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
Az Azure Portalon nyissa meg a standard logikai alkalmazás erőforrását és munkafolyamatát a tervezőben.
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.
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.
A munkafolyamatból származó adatok eléréséhez tekintse meg az Útmutató későbbi részében az Access munkafolyamat-eseményindítóját és műveletkimeneteit a szkriptben .
Ha vissza szeretné adni a szkript eredményeit vagy más adatait a munkafolyamatnak, olvassa el az Adatok visszaküldése a munkafolyamatba című témakört.
Az alábbi példa a művelet Paraméterek lapját mutatja be a példaszkript kódjával:
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
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:
-
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.
A PowerShell-kód végrehajtása műveletben első utasításként adja meg a következő kódot:
Connect-AzAccount -Identity
Mostantól parancsmagokkal és modulokkal dolgozhat az Azure-erőforrással.
A szkriptfájl megtekintése
Az Azure Portalon nyissa meg a standard logikai alkalmazás erőforrását, amely rendelkezik a kívánt munkafolyamatokkal.
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.
A Speciális eszközök lapon válassza az Ugrás lehetőséget, amely megnyitja a KuduPlus-konzolt.
Nyissa meg a Hibakeresési konzol menüjét, és válassza a CMD lehetőséget.
Nyissa meg a logikai alkalmazás gyökérhelyét: site/wwwroot
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}
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
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.
Az Application Insights menü Figyelés területén válassza a Naplók lehetőséget.
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:
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.
A Speciális eszközök lapon válassza az Ugrás lehetőséget.
A Kudu Plus eszköztár hibakeresési konzol menüjében válassza a CMD lehetőséget.
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.
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 }
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.
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.
A Speciális eszközök lapon válassza az Ugrás lehetőséget.
A Kudu Plus eszköztár hibakeresési konzol menüjében válassza a CMD lehetőséget.
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.
Hozzon létre egy Modulok nevű mappát.
A Modulok mappában hozzon létre egy, a privát modul nevével megegyező nevű almappát.
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.