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

Vedi anche