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, InlineScript
haszná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 InlineScript
munkamenet-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