Flussi di lavoro
I workflow di PowerShell Universal consentono di concatenare script e prompt IA in un unico flusso di automazione. I workflow sono utili quando è necessario passare l'output da un passaggio al successivo, creare diramazioni in base ai risultati precedenti o aggiungere elaborazione assistita dall'IA tra i passaggi di automazione.
I workflow possono essere creati nella console di amministrazione e gestiti da PowerShell. Quando un workflow viene eseguito, crea un job di workflow che è possibile monitorare dalla stessa cronologia dei job utilizzata per gli script.
Creazione di un workflow
Per creare un workflow nella console di amministrazione, vada su Automation / Workflows e clicchi su Create Workflow.
I workflow richiedono un nome e possono facoltativamente definire dei parametri. Questi parametri vengono mostrati quando il workflow viene avviato manualmente e sono disponibili per le espressioni e le attività durante l'esecuzione.
Utilizzo del designer di workflow
Il designer di workflow fornisce un editor visuale per organizzare e configurare il workflow. Quando apre un workflow, PSU visualizza il designer per quella definizione di workflow.
Aggiunta di attività
PowerShell Universal supporta attività di tipo script e prompt IA nei workflow. Internamente, i workflow utilizzano anche attività contenitore come i nodi flowchart e sequence per definire la struttura complessiva.
Per aggiungere un'attività, la trascini dal riquadro delle attività sul lato sinistro del designer in una zona di rilascio sul canvas.
Impostazione delle proprietà delle attività
Selezioni un'attività per modificarne le proprietà nel riquadro a destra. Le proprietà disponibili dipendono dal tipo di attività.
Per le attività di tipo script, PSU espone i parametri PowerShell dello script come proprietà dell'attività. Questo rende possibile associare valori fissi o espressioni di runtime senza riscrivere lo script solo per l'uso nei workflow.
Utilizzo delle espressioni PowerShell
Alcune proprietà delle attività supportano espressioni PowerShell. Le espressioni vengono valutate in fase di esecuzione e possono fare riferimento ai valori di input del workflow e all'output dell'attività precedente.
Utilizzi le espressioni quando il valore di una proprietà deve essere calcolato in fase di esecuzione invece di essere memorizzato come valore fisso. Ad esempio, può abilitare o disabilitare un comportamento in base a un parametro del workflow oppure selezionare valori dall'output del passaggio precedente.
Dati del workflow
Le espressioni e le attività possono accedere allo stato del workflow tramite variabili integrate.
Oggetto Workflow
Utilizzi la variabile $Workflow nelle espressioni PowerShell per accedere ai valori dei parametri del workflow.
Ad esempio, può impostare una proprietà booleana in base all'ambiente selezionato.
È anche possibile passare un parametro di workflow di tipo stringa direttamente a una proprietà dell'attività.
I parametri del workflow sono definiti sul workflow stesso. Li utilizzi per i valori che devono essere forniti all'avvio del workflow, come il nome di un ambiente, un periodo di conservazione o un target di approvazione.
PSUItem
La variabile $PSUItem fornisce l'accesso all'output dell'attività precedente. Il tipo di oggetto dipende da ciò che tale attività ha restituito.
Ad esempio, uno script può accettare $PSUItem come input.
È anche possibile fare riferimento a PSUItem nei prompt IA.
Può anche utilizzare $PSUItem o $Output nelle espressioni PowerShell per modificare il comportamento di un'attività in base all'output dell'attività precedente.
Utilizzi $PSUItem quando desidera passare output strutturato da un'attività alla successiva. Questo è il modo principale per creare workflow a più passaggi senza memorizzare stati intermedi altrove.
Deconstruct Hashtable Output
Panoramica
Deconstruct Hashtable Output controlla cosa accade al valore restituito da un passaggio di tipo Script una volta completato il passaggio. Quando è abilitato, PowerShell Universal prende una Hashtable a oggetto singolo restituita dallo script e ne distribuisce le chiavi/valori nello stato di output con ambito workflow, in modo che i passaggi successivi possano fare riferimento a ciascuna chiave come output di prima classe del workflow invece di dover scavare in $PSUItem.
Quando è disabilitato, tale distribuzione non avviene. Il passaggio successivo vede comunque l'output grezzo del passaggio precedente tramite $PSUItem, ma ogni chiave deve essere estratta manualmente.
Comportamento
Quando l'attività Script termina, PowerShell Universal:
1. Legge l'output della pipeline del passaggio.
2. Se DeconstructHashtableOutput è true:
• Prosegue solo se il passaggio ha restituito esattamente un oggetto di output con dati non vuoti.
• Se l'oggetto di base è una Hashtable, percorre ogni chiave e copia ciascuna coppia key → value nello stato di output del workflow (accessibile dai passaggi successivi).
3. In ogni caso, memorizza l'output grezzo per $PSUItem nel passaggio successivo (stato dell'attività precedente).
Esempio
Script del passaggio 1:
Con DeconstructHashtableOutput = $true (impostazione predefinita), il passaggio 2 può fare riferimento a ciascuna chiave direttamente tramite lo stato di output del workflow:
Impostando lo stato di output dell'attività del workflow, l'attività successiva può ricevere l'output come input per i parametri corrispondenti.
Con DeconstructHashtableOutput = $false, il passaggio 2 vede comunque la hashtable tramite $PSUItem e deve estrarla esplicitamente:
Aspetti da tenere presenti
• Esattamente un oggetto della pipeline. La decostruzione si attiva solo quando lo script emette un singolo output. Qualsiasi Write-Output involontario, espressione non soppressa o emissione accidentale di più valori la disabilita silenziosamente, anche con l'impostazione attiva. Se vede output del workflow vuoti, converta l'output indesiderato in $null o lo invii tramite pipe a Out-Null per mantenere la pipeline a una singola hashtable.
• Solo Hashtable, non PSCustomObject. Il codice verifica la presenza di Hashtable sull'oggetto di base. [pscustomobject]@{ ... } non verrà decostruito. Utilizzi @{ ... } se desidera il comportamento di distribuzione.
• L'output vuoto o composto da spazi viene ignorato. Se il singolo output dello script non contiene dati, la decostruzione viene saltata.
• $PSUItem funziona comunque in entrambi i casi. Disattivare l'impostazione non impedisce l'accesso all'output del passaggio precedente: cambia solo se le chiavi vengono esposte come output del workflow con nome.
Quando disattivarla
L'impostazione predefinita ($true) è la scelta giusta per la maggior parte dei workflow. La disattivi quando:
• Il suo script deve legittimamente emettere più oggetti della pipeline e non desidera che PSU tenti la semantica di distribuzione.
• Desidera che i passaggi successivi ricevano la hashtable come singolo oggetto opaco tramite $PSUItem e ne gestiscano autonomamente l'estrazione.
• Sta restituendo una Hashtable le cui chiavi entrano in conflitto con nomi già presenti nello stato di output del workflow e desidera evitare di sovrascriverli.
Impostare il valore tramite New-PSUWorkflowActivity
Esempio di pattern di workflow
Un pattern comune è:
Eseguire uno script per raccogliere i dati.
Passare l'output a un prompt IA o a un altro script.
Utilizzare il risultato in uno script finale per intraprendere un'azione.
Ad esempio:
Un'attività di tipo script restituisce un elenco di processi.
Un prompt IA identifica il processo che utilizza più memoria.
Uno script finale riceve tale risultato tramite
$PSUIteme invia una notifica.
Questo approccio mantiene ogni passaggio mirato e rende il workflow più facile da testare e su cui risolvere i problemi.
Esecuzione dei workflow
Su richiesta
I workflow possono essere eseguiti su richiesta cliccando sull'icona Play nella console di amministrazione. Se il workflow definisce dei parametri, PSU li richiede nella finestra di dialogo di esecuzione. Dopo l'avvio del workflow, PSU la reindirizza alla pagina del job del workflow.
Pianificazione
I workflow supportano le stesse opzioni di pianificazione degli script, incluse le pianificazioni CRON, una tantum e continue. Può creare pianificazioni di workflow da Automation / Schedules oppure assegnando una pianificazione direttamente al workflow.
Utilizzi le pianificazioni quando il workflow deve essere eseguito senza input manuale, ad esempio per la pulizia notturna, la convalida dell'ambiente o la classificazione periodica assistita dall'IA.
Invoke-PSUWorkflow
Invoke-PSUWorkflow consente di eseguire workflow da PowerShell o da altre parti della piattaforma PowerShell Universal. Come con Invoke-PSUScript, può fornire i valori dei parametri quando invoca il workflow.
Gestione dei workflow con PowerShell
Può gestire i workflow tramite il modulo Universal oltre che dalla console di amministrazione.
I cmdlet principali per i workflow sono:
Get-PSUWorkflowNew-PSUWorkflowSet-PSUWorkflowRemove-PSUWorkflowNew-PSUWorkflowParameterNew-PSUWorkflowActivityInvoke-PSUWorkflow
Definizione dei parametri del workflow
Utilizzi New-PSUWorkflowParameter per definire i metadati di input del workflow, come un valore predefinito, se il parametro è obbligatorio e il testo della guida mostrato agli utenti.
Definizione delle attività in PowerShell
Utilizzi New-PSUWorkflowActivity per creare definizioni di attività del workflow.
Utilizzi
-Parametersper i valori letterali.Utilizzi
-Expressionsper le espressioni PowerShell valutate in fase di esecuzione.Per
-Type Script, PSU può esporre parametri dinamici dallo script di destinazione.
Creazione di un workflow in PowerShell
New-PSUWorkflow accetta una stringa di definizione grezza oppure uno script block che restituisce una singola definizione di attività di workflow.
Monitoraggio delle esecuzioni dei workflow
Le esecuzioni dei workflow compaiono nella cronologia dei job esattamente come i job degli script. Utilizzi la pagina del job per esaminare:
stato attuale
output dello stream
output della pipeline
errori
Questo è il posto migliore per risolvere i problemi dei passaggi di workflow non riusciti e verificare i dati passati tra le attività.
Risoluzione dei problemi
Se una proprietà deve essere calcolata in fase di esecuzione, utilizzi un'espressione invece di un valore fisso.
$PSUItemcontiene solo l'output dell'attività precedente. La prima attività di un workflow non avrà output precedente.Le proprietà delle attività di tipo script si basano sui metadati dello script di destinazione. Se un parametro dello script non compare come previsto, verifichi il percorso dello script e il nome del parametro.
I nomi dei parametri delle attività e le chiavi delle espressioni devono corrispondere a proprietà valide per quel tipo di attività.
Se ha bisogno di un'esecuzione ricorrente, colleghi una pianificazione invece di invocare manualmente il workflow.
Argomenti correlati
Ultimo aggiornamento
È stato utile?