about_InlineScript

Rövid leírás

InlineScript A PowerShell-parancsokat egy munkafolyamatban futtató tevékenységet ismerteti.

Hosszú leírás

A InlineScript tevékenység parancsokat futtat egy megosztott PowerShell-munkamenet munkafolyamatában. InlineScript csak munkafolyamatokban érvényes.

Syntax

InlineScript {<script block>} <ActivityCommonParameters>

Részletes leírás

A InlineScript tevékenység parancsokat futtat egy megosztott PowerShell-munkamenetben. A munkafolyamatba belefoglalva futtathat olyan parancsokat, amelyek olyan adatokat és parancsokat osztanak meg, amelyek egyébként nem érvényesek a munkafolyamatban.

A InlineScript szkriptblokk tartalmazhat minden érvényes PowerShell-parancsot és -kifejezést. Mivel egy szkriptblokk parancsai és kifejezései ugyanabban a munkamenetben InlineScript futnak, minden állapotot és adatot megosztanak, beleértve az importált modulokat és a változók értékeit.

Egy tevékenységet bárhol elhelyezhet InlineScript egy munkafolyamatban vagy beágyazott munkafolyamatban, beleértve egy ciklus- vagy vezérlőutasítást, vagy egy párhuzamos vagy szekvencia-szkriptblokkot is.

A InlineScript tevékenység gyakori paraméterekkel rendelkezik, beleértve a PSPersistet is. A szkriptblokkok InlineScript parancsai és kifejezései azonban nem rendelkeznek olyan munkafolyamat-funkciókkal, mint például az ellenőrzőpont-ellenőrzés vagy az adatmegőrzés, valamint a munkafolyamat vagy tevékenység gyakori paraméterei. További információ: about_ActivityCommonParameters.

InlineScript-változók

A munkafolyamatban definiált változók alapértelmezés szerint nem láthatók a InlineScript szkriptblokk parancsai számára. Ha láthatóvá szeretné tenni a munkafolyamat változóit, InlineScripthasználja a $Using hatókör-módosítót. A $Using hatókör-módosító csak egyszer szükséges a InlineScript.

A hatókör-módosítóról további információt a $Using about_Remote_Variables talál.

Az alábbi példa azt mutatja be, hogy a $Using hatókör-módosító elérhetővé teszi a $a legfelső szintű munkafolyamat-változó értékét a InlineScript szkriptblokk parancsai számára.

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

Változók visszaadása az InlineScriptben

InlineScript a parancsok módosíthatják a munkafolyamat-hatókörből importált változó értékét, de a módosítások nem láthatók a munkafolyamat hatókörében. Ha láthatóvá szeretné tenni őket, adja vissza a módosított értéket a munkafolyamat hatókörébe az alábbi példában látható módon.

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

Feljegyzés

A változó szkriptblokkban InlineScript való használata előtt meg kell jelennie egy $Using hatókör-módosítóval rendelkező utasításnak.

Folyamatban lévő futtatás

A megbízhatóság javítása érdekében a InlineScript szkriptblokk parancsai a saját folyamatukban futnak, elkülönítve attól a folyamattól, amelyben a munkafolyamat fut, majd visszaadják a kimenetüket a munkafolyamat-folyamatnak.

Ha azt szeretné, hogy a PowerShell a munkafolyamat folyamatában futtassa a InlineScript tevékenységet, távolítsa el az értéket a InlineScriptmunkamenet-konfiguráció OutOfProcessActivity tulajdonságából, például a New-PSWorkflowExecutionOption parancsmag használatával.

Példa

A InlineScript következő munkafolyamat olyan parancsokat tartalmaz, amelyek érvényesek a PowerShellben, de nem érvényesek a munkafolyamatokban. Például a New-Object ComObject paraméterrel rendelkező parancsmag.

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

    $ie.Visible = $true
  }

  $ie
}

Test-Workflow

Lásd még