about_InlineScript
Descrizione breve
Descrive l'attività InlineScript
che esegue i comandi di PowerShell in un flusso di lavoro.
Descrizione lunga
L'attività InlineScript
esegue comandi nel flusso di lavoro di una sessione di PowerShell condivisa. InlineScript
è valido solo nei flussi di lavoro.
Sintassi
InlineScript {<script block>} <ActivityCommonParameters>
Descrizione dettagliata
L'attività InlineScript
esegue comandi in una sessione di PowerShell condivisa. È possibile includerlo in un flusso di lavoro per eseguire comandi che condividono dati e comandi che non sono altrimenti validi in un flusso di lavoro.
Il InlineScript
blocco di script può includere tutti i comandi e le espressioni di PowerShell validi. Poiché i comandi e le espressioni in un InlineScript
blocco di script vengono eseguiti nella stessa sessione, condividono tutti gli stati e i dati, inclusi i moduli importati e i valori delle variabili.
È possibile inserire un'attività InlineScript
in un punto qualsiasi in un flusso di lavoro o in un flusso di lavoro annidato, incluso un ciclo o un'istruzione di controllo o un blocco di script Parallel o Sequence.
L'attività InlineScript
ha i parametri comuni dell'attività, incluso PSPersist. Tuttavia, i comandi e le espressioni in un InlineScript
blocco di script non dispongono delle funzionalità del flusso di lavoro, ad esempio il checkpoint, la persistenza e i parametri comuni del flusso di lavoro o dell'attività. Per altre informazioni, vedere about_ActivityCommonParameters.
Variabili InlineScript
Per impostazione predefinita, le variabili definite in un flusso di lavoro non sono visibili ai comandi nel InlineScript
blocco di script. Per rendere visibili le variabili del flusso di lavoro a InlineScript
, usare il modificatore di $Using
ambito. Il $Using
modificatore di ambito è necessario una sola volta per ogni variabile in InlineScript
.
Per altre informazioni sul modificatore di $Using
ambito, vedere about_Remote_Variables.
L'esempio seguente mostra che il $Using
modificatore di ambito rende disponibile il valore della variabile del $a
flusso di lavoro di primo livello per i comandi nel InlineScript
blocco di script.
workflow Test-Workflow {
$a = 3
## Without $Using, the $a workflow variable isn't visible
## in inline script.
InlineScript {"Inline A0 = $a"}
## $Using imports the variable and its current value.
InlineScript {"Inline A1 = $Using:a"}
}
Test-Workflow
Inline A0 =
Inline A1 = 3
Restituzione di variabili in InlineScript
InlineScript
I comandi possono modificare il valore della variabile importata dall'ambito del flusso di lavoro, ma le modifiche non sono visibili nell'ambito del flusso di lavoro. Per renderle visibili, restituire il valore modificato all'ambito del flusso di lavoro, come illustrato nell'esempio seguente.
workflow Test-Workflow {
$a = 3
## Changes to the InlineScript variable value don't
## change the workflow variable.
InlineScript {
$a = $Using:a+1;
"Inline A = $a"
}
"Workflow A = $a"
## To change the variable in workflow scope, return the
## new value.
$a = InlineScript {$b = $Using:a+1; $b}
"Workflow New A = $a"
}
Test-Workflow
Inline A = 4
Workflow A = 3
Workflow New A = 4
Nota
Un'istruzione con il $Using
modificatore di ambito deve essere visualizzata prima di qualsiasi uso della variabile nel InlineScript
blocco di script.
Esecuzione in-process
Per migliorare l'affidabilità, i comandi nel InlineScript
blocco di script vengono eseguiti nel proprio processo, separati dal processo in cui viene eseguito il flusso di lavoro e quindi restituiscono l'output al processo del flusso di lavoro.
Per indirizzare PowerShell a eseguire l'attività InlineScript
nel processo del flusso di lavoro, rimuovere il InlineScript
valore dalla proprietà OutOfProcessActivity della configurazione della sessione, ad esempio usando il New-PSWorkflowExecutionOption
cmdlet .
Esempio
InlineScript
Nel flusso di lavoro seguente sono inclusi comandi validi in PowerShell, ma non validi nei flussi di lavoro. Ad esempio, il New-Object
cmdlet con il parametro ComObject .
workflow Test-Workflow
{
$ie = InlineScript {
$ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}
$ie.Visible = $true
}
$ie
}
Test-Workflow