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 InlineScriptwerkstroom. 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

Zie ook