Megosztás a következőn keresztül:


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 inlinescript tevékenységet bárhol elhelyezhet egy munkafolyamatban vagy beágyazott munkafolyamatban, beleértve a ciklus- vagy vezérlőutasításokat, illetve egy parallel vagy sequence 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 Using: való használata előtt meg kell jelennie egy inlinescript 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