about_InlineScript
Korte beschrijving
Beschrijft de InlineScript
activiteit, waarmee PowerShell-opdrachten in een werkstroom worden uitgevoerd.
Lange beschrijving
De InlineScript
activiteit voert opdrachten uit in de werkstroom van een gedeelde PowerShell-sessie. InlineScript
is alleen geldig in werkstromen.
Syntaxis
InlineScript {<script block>} <ActivityCommonParameters>
Gedetailleerde beschrijving
De InlineScript
activiteit voert opdrachten uit in een gedeelde PowerShell-sessie. U kunt deze opnemen in een werkstroom om opdrachten uit te voeren die gegevens en opdrachten delen die anders niet geldig zijn in een werkstroom.
Het InlineScript
scriptblok kan alle geldige PowerShell-opdrachten en -expressies bevatten. Omdat de opdrachten en expressies in een InlineScript
scriptblok in dezelfde sessie worden uitgevoerd, delen ze alle status en gegevens, inclusief geïmporteerde modules en de waarden van variabelen.
U kunt een InlineScript
activiteit overal in een werkstroom of geneste werkstroom plaatsen, inclusief binnen een lus- of besturingsinstructie of een parallel of reeksscriptblok.
De InlineScript
activiteit heeft de gemeenschappelijke parameters voor de activiteit, waaronder PSPersist. De opdrachten en expressies in een InlineScript
scriptblok hebben echter geen werkstroomfuncties, zoals controlepunten of persistentie, en algemene parameters voor werkstroom of activiteit. Zie about_ActivityCommonParameters voor meer informatie.
InlineScript-variabelen
De variabelen die in een werkstroom zijn gedefinieerd, zijn standaard niet zichtbaar voor de opdrachten in het InlineScript
scriptblok. Gebruik de $Using
bereikaanpassing om werkstroomvariabelen zichtbaar te maken voor de InlineScript
werkstroom. De $Using
bereikaanpassing is slechts eenmaal vereist voor elke variabele in de InlineScript
.
Zie about_Remote_Variables voor meer informatie over de $Using
bereikaanpassing.
In het volgende voorbeeld ziet u dat de $Using
bereikaanpassing de waarde van de $a
werkstroomvariabele op het hoogste niveau beschikbaar maakt voor de opdrachten in het InlineScript
scriptblok.
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
Variabelen retourneren in InlineScript
InlineScript
opdrachten kunnen de waarde wijzigen van de variabele die is geïmporteerd uit het werkstroombereik, maar de wijzigingen zijn niet zichtbaar in het werkstroombereik. Als u deze zichtbaar wilt maken, retourneert u de gewijzigde waarde in het werkstroombereik, zoals wordt weergegeven in het volgende voorbeeld.
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
Notitie
Er moet een instructie met de $Using
bereikaanpassing worden weergegeven voordat u de variabele in het InlineScript
scriptblok gebruikt.
In-process uitvoeren
Om de betrouwbaarheid te verbeteren, worden de opdrachten in het InlineScript
scriptblok uitgevoerd in hun eigen proces, gescheiden van het proces waarin de werkstroom wordt uitgevoerd en retourneren ze hun uitvoer naar het werkstroomproces.
Als u PowerShell wilt leiden om de InlineScript
activiteit in het werkstroomproces uit te voeren, verwijdert u de InlineScript
waarde uit de eigenschap OutOfProcessActivity van de sessieconfiguratie, zoals met behulp van de New-PSWorkflowExecutionOption
cmdlet.
Opmerking
De InlineScript
volgende werkstroom bevat opdrachten die geldig zijn in PowerShell, maar die niet geldig zijn in werkstromen. Bijvoorbeeld de New-Object
cmdlet met de parameter ComObject .
workflow Test-Workflow
{
$ie = InlineScript {
$ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}
$ie.Visible = $true
}
$ie
}
Test-Workflow