about_InlineScript

Kort beskrivning

Beskriver aktiviteten InlineScript som kör PowerShell-kommandon i ett arbetsflöde.

Lång beskrivning

Aktiviteten InlineScript kör kommandon i en delad PowerShell-session arbetsflöde. InlineScript är endast giltigt i arbetsflöden.

Syntax

InlineScript {<script block>} <ActivityCommonParameters>

Detaljerad beskrivning

Aktiviteten InlineScript kör kommandon i en delad PowerShell-session. Du kan inkludera den i ett arbetsflöde för att köra kommandon som delar data och kommandon som annars inte är giltiga i ett arbetsflöde.

Skriptblocket InlineScript kan innehålla alla giltiga PowerShell-kommandon och -uttryck. Eftersom kommandona och uttrycken i ett InlineScript skriptblock körs i samma session delar de alla tillstånd och data, inklusive importerade moduler och variablernas värden.

Du kan placera en InlineScript aktivitet var som helst i ett arbetsflöde eller ett kapslat arbetsflöde, inklusive inuti en loop eller kontrolluttryck eller ett skriptblock för parallell eller sekvens.

Aktiviteten InlineScript har vanliga parametrar för aktiviteten, inklusive PSPersist. Kommandona och uttrycken i ett InlineScript skriptblock har dock inte arbetsflödesfunktioner som kontrollpunkter eller beständighet och vanliga parametrar för arbetsflöde eller aktivitet. Mer information finns i about_ActivityCommonParameters.

InlineScript-variabler

Som standard är variablerna som definieras i ett arbetsflöde inte synliga för kommandona i skriptblocket InlineScript . Om du vill göra arbetsflödesvariabler synliga för InlineScriptanvänder du omfångsmodifieraren $Using . Omfångsmodifieraren $Using krävs bara en gång för varje variabel i InlineScript.

Mer information om omfångsmodifieraren $Using finns i about_Remote_Variables.

I följande exempel visas att $Using omfångsmodifieraren gör värdet för arbetsflödesvariabeln på den $a översta nivån tillgängligt för kommandona i skriptblocket InlineScript .

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

Returnera variabler i InlineScript

InlineScript kommandon kan ändra värdet för variabeln som importerades från arbetsflödesomfånget, men ändringarna visas inte i arbetsflödesomfånget. Om du vill göra dem synliga returnerar du det ändrade värdet till arbetsflödesomfånget, som du ser i följande exempel.

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

Kommentar

En instruktion med omfångsmodifieraren $Using bör visas innan variabeln används i skriptblocket InlineScript .

Körs i processen

För att förbättra tillförlitligheten körs kommandona i skriptblocket InlineScript i sin egen process, åtskilda från den process där arbetsflödet körs och returnerar sedan utdata till arbetsflödesprocessen.

Om du vill dirigera PowerShell att köra InlineScript aktiviteten i arbetsflödesprocessen tar du bort InlineScript värdet från egenskapen OutOfProcessActivity för sessionskonfigurationen, till exempel med hjälp av cmdleten New-PSWorkflowExecutionOption .

Exempel

I InlineScript följande arbetsflöde finns kommandon som är giltiga i PowerShell men som inte är giltiga i arbetsflöden. Till exempel cmdleten New-Object med parametern ComObject .

workflow Test-Workflow
{
  $ie = InlineScript {
    $ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}

    $ie.Visible = $true
  }

  $ie
}

Test-Workflow

Se även