Udostępnij za pośrednictwem


about_InlineScript

Krótki opis

InlineScript Opisuje działanie, które uruchamia polecenia programu PowerShell w przepływie pracy.

Długi opis

Działanie InlineScript uruchamia polecenia w przepływie pracy udostępnionej sesji programu PowerShell. InlineScript jest prawidłowy tylko w przepływach pracy.

Składnia

InlineScript {<script block>} <ActivityCommonParameters>

Szczegółowy opis

Działanie InlineScript uruchamia polecenia w udostępnionej sesji programu PowerShell. Można go uwzględnić w przepływie pracy, aby uruchamiać polecenia, które udostępniają dane i polecenia, które nie są w inny sposób prawidłowe w przepływie pracy.

Blok InlineScript skryptu może zawierać wszystkie prawidłowe polecenia i wyrażenia programu PowerShell. Ponieważ polecenia i wyrażenia w bloku skryptu są uruchamiane w InlineScript tej samej sesji, współużytkują wszystkie stany i dane, w tym zaimportowane moduły i wartości zmiennych.

Działanie można umieścić InlineScript w dowolnym miejscu w przepływie pracy lub zagnieżdżonym przepływie pracy, w tym wewnątrz pętli lub instrukcji kontrolki albo bloku skryptu równoległego lub sekwencyjnego.

Działanie InlineScript ma typowe parametry działania, w tym PSPersist. Jednak polecenia i wyrażenia w InlineScript bloku skryptu nie mają funkcji przepływu pracy, takich jak tworzenie punktów kontrolnych lub trwałość, a także typowe parametry przepływu pracy lub działania. Aby uzyskać więcej informacji, zobacz about_ActivityCommonParameters.

Zmienne inlineScript

Domyślnie zmienne zdefiniowane w przepływie pracy nie są widoczne dla poleceń w bloku skryptu InlineScript . Aby uwidocznić zmienne przepływu pracy dla InlineScriptelementu , użyj $Using modyfikatora zakresu. Modyfikator $Using zakresu jest wymagany tylko raz dla każdej zmiennej w obiekcie InlineScript.

Aby uzyskać więcej informacji na temat $Using modyfikatora zakresu, zobacz about_Remote_Variables.

Poniższy przykład pokazuje, że modyfikator zakresu sprawia, że $Using wartość $a zmiennej przepływu pracy najwyższego poziomu jest dostępna dla poleceń w bloku skryptu 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

Zwracanie zmiennych w języku InlineScript

InlineScript Polecenia mogą zmieniać wartość zmiennej zaimportowanej z zakresu przepływu pracy, ale zmiany nie są widoczne w zakresie przepływu pracy. Aby były widoczne, zwróć zmienioną wartość do zakresu przepływu pracy, jak pokazano w poniższym przykładzie.

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

Uwaga

Przed użyciem zmiennej w bloku skryptu InlineScript powinna zostać wyświetlona instrukcja z $Using modyfikatorem zakresu.

Uruchamianie procesu

Aby zwiększyć niezawodność, polecenia w bloku skryptu InlineScript są uruchamiane we własnym procesie, niezależnie od procesu, w którym jest uruchamiany przepływ pracy, a następnie zwracają dane wyjściowe do procesu przepływu pracy.

Aby skierować program PowerShell do uruchomienia InlineScript działania w procesie przepływu pracy, usuń InlineScript wartość z właściwości OutOfProcessActivity konfiguracji sesji, na przykład za pomocą New-PSWorkflowExecutionOption polecenia cmdlet .

Przykład

W InlineScript poniższym przepływie pracy znajdują się polecenia, które są prawidłowe w programie PowerShell, ale nie są prawidłowe w przepływach pracy. Na przykład New-Object polecenie cmdlet z parametrem ComObject .

workflow Test-Workflow
{
  $ie = InlineScript {
    $ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}

    $ie.Visible = $true
  }

  $ie
}

Test-Workflow

Zobacz też