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 InlineScript
anvä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