Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica: App per la logica di Azure (Standard)
Per eseguire attività di integrazione personalizzate inline con il flusso di lavoro Standard in App per la logica di Azure, è possibile aggiungere ed eseguire direttamente il codice di PowerShell dall'interno del flusso di lavoro. Per questa attività, usare l'azione Codice inline denominata Esegui codice di PowerShell. Questa azione restituisce i risultati del codice di PowerShell in modo che sia possibile usare questo output nelle azioni successive del flusso di lavoro.
Questa funzionalità offre i vantaggi seguenti:
Scrivere script personalizzati all'interno della finestra di progettazione del flusso di lavoro in modo da poter risolvere problemi di integrazione complessi. Non sono necessari altri piani di servizio.
Questo vantaggio riduce la complessità e i costi perché è possibile gestire più servizi e semplificare lo sviluppo del flusso di lavoro.
Generare un file di codice dedicato, che fornisce uno spazio di scripting personalizzato all'interno del flusso di lavoro.
Eseguire l'integrazione con le funzioni di PowerShell di Funzioni di Azure, che offre funzionalità avanzate ed ereditarietà per l'esecuzione avanzata delle attività.
Distribuire il codice insieme ai flussi di lavoro.
Questa guida illustra come aggiungere l'azione nel flusso di lavoro e aggiungere il codice di PowerShell da eseguire.
Prerequisiti
Un account e una sottoscrizione di Azure. Ottenere un account Azure gratuito.
La risorsa dell'app logica Standard contenente il flusso di lavoro in cui si desidera aggiungere lo script PowerShell.
Il flusso di lavoro deve già iniziare con un trigger. È possibile usare qualsiasi trigger per lo scenario, ma, ad esempio, questa guida usa il trigger Richiesta denominato Quando viene ricevuta una richiesta HTTP e anche l'azione Risposta . Il flusso di lavoro viene eseguito quando un'altra applicazione o flusso di lavoro invia una richiesta all'URL dell'endpoint del trigger. Lo script di esempio restituisce i risultati dell'esecuzione del codice come output che è possibile usare nelle azioni successive.
Se non si ha una risorsa e un flusso di lavoro dell'app per la logica, crearli ora seguendo questa procedura:
Considerazioni
Il portale di Azure salva lo script come file di script di PowerShell (ps1) nella stessa cartella del file workflow.json, che archivia la definizione JSON per il flusso di lavoro e distribuisce il file nella risorsa dell'app per la logica insieme alla definizione del flusso di lavoro.
Il formato di file.ps1 consente di scrivere meno "boilerplate" e di concentrarsi solo sulla scrittura di codice di PowerShell. Se si rinomina l'azione, il file viene rinominato, ma non viceversa. Se si rinomina direttamente il file, la versione rinominata sovrascrive la versione precedente. Se il nome dell'azione e i nomi di file non corrispondono, l'azione non riesce a trovare il file e tenta di creare un nuovo file vuoto.
Lo script è locale per il flusso di lavoro. Per usare lo stesso script in altri flussi di lavoro, visualizzare il file di script nella console Kudu e quindi copiare lo script da riutilizzare in altri flussi di lavoro.
Limitazioni
| Nome | Limite | Note |
|---|---|---|
| Durata esecuzione script | 10 minuti | Se si hanno scenari che richiedono durate più lunghe, usare l'opzione di feedback del prodotto per fornire altre informazioni sulle proprie esigenze. |
| Dimensioni di output | 100 MB | Le dimensioni dell'output dipendono dal limite di dimensioni di output per le azioni, che in genere è di 100 MB. |
Aggiornare la versione di PowerShell
È possibile modificare la versione di PowerShell nella risorsa dell'app per la logica modificando le impostazioni dell'applicazione. Tuttavia, prima di aggiornare l'app, prendere in esame le considerazioni seguenti:
Un aggiornamento della versione potrebbe introdurre modifiche critiche alla tua app per la logica Standard, che utilizza un runtime ospitato come estensione nel runtime di Azure Functions. Prima di eseguire l'aggiornamento, vedere la seguente guida alla migrazione: Aggiornamento delle app di Funzioni di Azure per l'esecuzione in PowerShell 7.4.
Assicurarsi che l'app per la logica usi la versione di runtime più recente per il runtime di Funzioni di Azure in Azure, ovvero la versione 4.x. Per altre informazioni, vedere Visualizzare la versione di runtime corrente.
Note
Per impostazione predefinita, se non si specifica una versione di PowerShell, App per la logica di Azure usa la stessa versione predefinita di Funzioni di Azure. Attualmente, PowerShell 7.4 è disponibile a livello generale. Per altre informazioni sulle versioni disponibili, vedere la Guida per sviluppatori di PowerShell per Funzioni di Azure.
In base alla posizione in cui si vuole aggiornare la versione di PowerShell, seguire i passaggi corrispondenti:
Nel portale di Azure, aprire la risorsa dell’app per la logica Standard.
Nella barra laterale della risorsa, in Impostazioni, selezionare Variabili di ambiente.
Nella scheda Impostazioni app selezionare + Aggiungi.
Nel riquadro Aggiungi/Modifica impostazione applicazione aggiungere la seguente nuova impostazione dell'app:
Parametro Value Descrizione Nome LOGIC_APPS_POWERSHELL_VERSIONNome dell'impostazione dell'app. Valore < versione di PowerShell> Versione di PowerShell, attualmente 7.4. Al termine, selezionare Applica. Quando viene visualizzato l'avviso di riavvio, selezionare Continua.
L'app per la logica viene riavviata con la versione aggiornata.
Aggiungere l'azione Esegui codice PowerShell
Nel portale di Azure, aprire la risorsa dell’app per la logica Standard.
Nella barra laterale della risorsa, in Flussi di lavoro selezionare Flussi di lavoro e quindi selezionare il flusso di lavoro vuoto.
Nella barra laterale del flusso di lavoro, in Strumenti, selezionare lo strumento di progettazione per aprire il flusso di lavoro.
Aggiungere l'azione Operazioni codice inline denominata Esegui codice PowerShell al flusso di lavoro seguendo i passaggi generali per aggiungere un'azione.
Dopo aver aperto il riquadro informazioni sull'azione, nella scheda Parametri aggiornare il codice di esempio prepopolato con il proprio codice nella casella File di codice.
Per accedere ai dati provenienti dal flusso di lavoro, vedere Accedere agli output di trigger e azioni del flusso di lavoro nello script più avanti in questa guida.
Per restituire i risultati dello script o altri dati al flusso di lavoro, vedere Restituire dati al flusso di lavoro.
L'esempio seguente mostra la scheda Parametri dell'azione con il codice script di esempio:
L'esempio seguente illustra il codice di script di esempio:
# 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 $customResponseL'esempio seguente mostra uno script di esempio personalizzato:
$action = Get-TriggerOutput $results = "Hello from PowerShell!" Push-WorkflowOutput -Output $resultsAl termine, salvare il flusso di lavoro.
Dopo aver eseguito il flusso di lavoro, è possibile esaminare l'output del flusso in Application Insights, se abilitato. Per altre informazioni, vedere Visualizzare l'output in Application Insights.
Accedere agli output di trigger e azioni del flusso di lavoro nello script
I valori di output del trigger e delle azioni precedenti vengono restituiti usando un oggetto personalizzato, con più parametri. Per accedere a questi output e assicurarsi di restituire il valore desiderato, usare i cmdlet Get-TriggerOutput, Get-ActionOutput e Push-WorkflowOutput , oltre ai parametri appropriati descritti nella tabella seguente, ad esempio:
$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
Note
In PowerShell, se si fa riferimento a un oggetto con tipo JValue all'interno di un oggetto complesso e si aggiunge tale oggetto a una stringa, si ottiene un'eccezione di formato. Per evitare questo errore, usare ToString().
Output della risposta di trigger e azione
Nella tabella seguente sono elencati gli output generati quando si chiama Get-ActionOutput o Get-TriggerOutput. Il valore restituito è un oggetto complesso denominato PowershellWorkflowOperationResult, che contiene gli output seguenti.
| Nome | Tipo | Descrizione |
|---|---|---|
| Nome | string | Nome del trigger o dell'azione |
| Input | JToken | Valori di input forniti al trigger o all'azione |
| Output | JToken | Output dal trigger o dall'azione eseguita |
| StartTime | Datetime | Ora di inizio per il trigger o l'azione |
| EndTime | Datetime | Ora di fine del trigger o dell'azione |
| ScheduledTime | Datetime | Tempo pianificato per l'esecuzione del trigger o dell'azione o del trigger |
| OriginHistoryName | string | Nome della cronologia di origine per i trigger che usano la splitOn proprietà |
| SourceHistoryName | string | Nome della cronologia di origine per un trigger di nuovo inviato |
| TrackingId | string | ID di tracciamento dell'operazione |
| Codice | string | Il codice di stato per il risultato |
| Status | string | Stato dell'esecuzione per il trigger o l'azione, ad esempio "Completato" o "Non riuscito" |
| Error (Errore) (Error (Errore)e) | JToken | Codice di errore HTTP |
| TrackedProperties | JToken | Tutte le proprietà monitorate che hai configurato |
Restituire output al flusso di lavoro
Per restituire gli output al flusso di lavoro, è necessario usare il cmdletPush-WorkflowOutput.
Comandi di PowerShell personalizzati
L'azione Esegui codice PowerShell include i comandi personalizzati di PowerShell (cmdlet) seguenti per interagire con il flusso di lavoro e altre operazioni nel flusso di lavoro:
Get-TriggerOutput
Ottiene l'output dal trigger del flusso di lavoro.
Sintassi
Get-TriggerOutput
Parametri
No.
Get-ActionOutput
Ottiene l'output da un'altra azione nel flusso di lavoro e restituisce un oggetto denominato PowershellWorkflowOperationResult.
Sintassi
Get-ActionOutput [ -ActionName <String> ]
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
| ActionName | string | Nome dell'azione nel flusso di lavoro con l'output a cui si desidera fare riferimento. |
Push-WorkflowOutput
Esegue il push dell'output dall'azione Esegui codice di PowerShell al flusso di lavoro, che può passare qualsiasi tipo di oggetto. Se il valore restituito è Null, viene visualizzato un errore di oggetto Null dal cmdlet .
Note
I Write-Debugcmdlet , Write-Hoste Write-Output non restituiscono valori al flusso di lavoro. La dichiarazione return non restituisce valori neanche al flusso di lavoro.
Tuttavia, è possibile usare questi cmdlet per scrivere messaggi di traccia visualizzati in Application Insights.
Per altre informazioni, vedere Microsoft.PowerShell.Utility.
Sintassi
Push-WorkflowOutput [-Output <Object>] [-Clobber]
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
| Risultato | Variabile | Output che si desidera restituire al flusso di lavoro. Questo output può avere qualsiasi tipo. |
| Clobber | Variabile | Parametro di opzione facoltativo che è possibile usare per eseguire l'override dell'output precedentemente sottoposto a push. |
Autenticare e autorizzare l'accesso con un'identità gestita tramite PowerShell
Con un'identità gestita, la risorsa e il flusso di lavoro dell'app per la logica possono autenticare e autorizzare l'accesso a qualsiasi servizio e risorsa di Azure che supporti l'autenticazione di Microsoft Entra senza includere le credenziali nel codice.
Dall'interno dell'azione Esegui codice di PowerShell, è possibile autenticare e autorizzare l'accesso con un'identità gestita in modo da poter eseguire azioni su altre risorse di Azure in cui è stato abilitato l'accesso. Ad esempio, è possibile riavviare una macchina virtuale o ottenere i dettagli dell'esecuzione di un altro flusso di lavoro dell'app per la logica.
Per usare l'identità gestita dall'interno dell'azione Esegui codice PowerShell, è necessario seguire questa procedura:
Configurare l'identità gestita nella logic app e concedere l'accesso all'identità gestita nella risorsa di Azure di destinazione. Per i passaggi dettagliati, vedere Autenticare l'accesso e le connessioni alle risorse di Azure con identità gestite.
Nella risorsa di Azure di destinazione esaminare le considerazioni seguenti:
Nella scheda Ruolo è in genere sufficiente un ruolo Collaboratore.
Nella pagina Aggiungi assegnazione di ruolo, nella scheda Membri, per la proprietà Assegna accesso alla proprietà, assicurarsi di selezionare Identità gestita.
Dopo aver selezionato Seleziona membri, nel riquadro Seleziona identità gestite selezionare l'identità gestita da usare.
Nell'azione Esegui codice PowerShell, includere il codice seguente come prima istruzione:
Connect-AzAccount -IdentityÈ ora possibile usare la risorsa di Azure usando i cmdlet e i moduli.
Visualizzare il file di script
Nel portale di Azure, aprire la risorsa dell’app per la logica Standard.
Nella barra laterale della risorsa, in Strumenti di sviluppo selezionare Strumenti avanzati.
Nella pagina Strumenti avanzati selezionare Vai per aprire la console Kudu .
Aprire il menu Console di debug e selezionare CMD.
Passare alla posizione radice dell'app per la logica: site/wwwroot
Passare alla cartella del flusso di lavoro, che contiene il file con l'estensione .ps1 lungo questo percorso: site/wwwroot/{workflow-name}
Accanto al nome del file selezionare Modifica per aprire e visualizzare il file.
Visualizzare i log in Application Insights
Nel portale di Azure, nella barra laterale dell'app per la logica, sotto Monitoraggio, selezionare Application Insights (non Insights).
Selezionare il collegamento alla risorsa di Application Insights.
Nella barra laterale della risorsa di Application Insights , in Monitoraggio selezionare Log.
Creare una query per trovare tracce o errori dall'esecuzione del flusso di lavoro, ad esempio:
union traces, errors | project TIMESTAMP, message
Moduli
I moduli di PowerShell sono unità autonome riutilizzabili che includono vari componenti, ad esempio:
- Cmdlet: singoli comandi che eseguono attività specifiche.
- Provider: consente l'accesso agli archivi dati, ad esempio il Registro di sistema o il file system, come se fossero delle unità.
- Funzioni: blocchi di codice riutilizzabili che eseguono azioni specifiche.
- Variabili: archiviare i dati da usare all'interno del modulo.
- Altri tipi di risorse.
Un modulo organizza il codice di PowerShell, semplificando la distribuzione. Ad esempio, è possibile creare moduli personalizzati per creare pacchetti e rendere più gestibile e condivisibile la funzionalità correlata. L'azione Esegui codice PowerShell consente di importare moduli PowerShell pubblici e privati.
Moduli pubblici
Per trovare moduli disponibili pubblicamente, visitare la raccolta di PowerShell. Una risorsa dell'app per la logica Standard può supportare fino a 10 moduli pubblici. Per usare qualsiasi modulo pubblico, è necessario abilitare questa funzionalità seguendo questa procedura:
Nella barra laterale della logic app nel portale di Azure, sotto Strumenti di sviluppo, selezionare Strumenti avanzati.
Nella pagina Strumenti avanzati selezionare Vai.
Sulla barra degli strumenti Kudu scegliere CMD nel menu Console di debug.
Passare al livello radice dell'app per la logica in C:\home\site\wwwroot usando la struttura di directory o la riga di comando.
Aprire il file del flusso di lavoro host.json e impostare la proprietà
ManagedDependency.enabledsutrue, che è già impostata di default."managedDependency": { "enabled": true }Aprire il file denominato requirements.psd1. Includere il nome e la versione per il modulo desiderato usando la sintassi seguente:
MajorNumber.*o la versione esatta del modulo, ad esempio:@{ Az = '1.*' SqlServer = '21.1.18147' }
Considerazioni per i moduli pubblici
Se si usa la gestione delle dipendenze, si applicano le considerazioni seguenti:
Per scaricare i moduli, i moduli pubblici richiedono l'accesso a PowerShell Gallery.
Le dipendenze gestite attualmente non supportano i moduli che richiedono l'accettazione di una licenza, accettando la licenza in modo interattivo o fornendo l'opzione
-AcceptLicensequando si esegue Install-Module.
Moduli privati
È possibile generare moduli di PowerShell privati. Per creare il primo modulo di PowerShell, vedere Scrivere un modulo di script di PowerShell.
Nella barra laterale delle risorse dell'app logica del portale di Azure, sotto Strumenti di sviluppo, selezionare gli Strumenti avanzati.
Nella pagina Strumenti avanzati selezionare Vai.
Sulla barra degli strumenti Kudu scegliere CMD nel menu Console di debug.
Passare al livello radice dell'app per la logica in C:\home\site\wwwroot usando la struttura di directory o la riga di comando.
Creare una cartella denominata Moduli.
Nella cartella Moduli creare una sottocartella con lo stesso nome del modulo privato.
Nella cartella del modulo privato aggiungere il file del modulo di PowerShell privato con l'estensione psm1 . È anche possibile includere un file manifesto di PowerShell facoltativo con l'estensione psd1 .
Al termine, la struttura completa del file dell'app per la logica appare simile all'esempio seguente:
MyLogicApp
-- execute_powershell_script.ps1
-- mytestworkflow.json
Modules
-- MyPrivateModule
--- MyPrivateModule.psd1
--- MyPrivateModule.psm1
-- MyPrivateModule2
--- MyPrivateModule2.psd1
--- MyPrivateModule2.psm1
requirements.psd1
host.json
Errori di compilazione
In questa versione, l'editor basato sul Web include un supporto IntelliSense limitato, che è ancora in fase di miglioramento. Eventuali errori di compilazione vengono rilevati quando si salva il flusso di lavoro e il runtime di App per la logica di Azure compila lo script. Questi errori vengono visualizzati nei log degli errori dell'app per la logica tramite Application Insights.
Errori di runtime
Un'azione del flusso di lavoro non restituisce alcun output.
Assicurarsi di usare il Push-WorkflowOutput cmdlet .
L'azione Esegui codice di PowerShell non riesce: "Il termine '{some-text}' non è riconosciuto..."
Se si fa riferimento erroneamente a un modulo pubblico nel file requirements.psd1 o se il modulo privato non esiste nel percorso C:\home\site\wwwroot\Modules{module-name}, viene visualizzato l'errore seguente:
"Il termine '{some-text}' non è riconosciuto come nome di un cmdlet, di una funzione, di un file di script o di un programma eseguibile. Controllare l'ortografia del nome o se è stato incluso un percorso, verificare che il percorso sia corretto e riprovare."
Note
Per impostazione predefinita, i moduli Az* vengono visualizzati nel file requirements.psd1, ma vengono commentati durante la creazione del file. Quando si fa riferimento a un cmdlet dal modulo, assicurarsi di rimuovere il commento dal modulo.
L'azione Esegui codice di PowerShell ha esito negativo: "Impossibile associare l'argomento al parametro 'Output' perché è null".
Questo errore si verifica quando si tenta di eseguire il push di un oggetto Null nel flusso di lavoro. Verificare se l'oggetto con Push-WorkflowOutput cui si sta inviando non è Null.