Поделиться через


Invoke-AsWorkflow

Выполняет команду или выражение как рабочий процесс Windows PowerShell.

Синтаксис

Invoke-AsWorkflow
      [-CommandName <String>]
      [-Parameter <Hashtable>]
      [-InputObject <Object>]
      [<CommonParameters>]
Invoke-AsWorkflow
      [-Expression <String>]
      [-InputObject <Object>]
      [<CommonParameters>]

Описание

Рабочий Invoke-AsWorkflow процесс выполняет любую команду или выражение в виде встроенного скрипта в рабочем процессе. Эти рабочие процессы используют стандартную семантику рабочих процессов, имеют все общие параметры рабочих процессов и обладают всеми преимуществами рабочих процессов, включая возможность остановки, возобновления и восстановления.

Рабочие процессы предназначены для долго выполняющихся команд, которые осуществляют сбор критически важных данных, однако их можно использовать для выполнения любой команды. Дополнительные сведения см. в about_Workflows.

В эту команду также можно добавить общие параметры рабочих процессов. Дополнительные сведения о распространенных параметрах рабочего процесса см. в about_WorkflowCommonParameters

Этот рабочий процесс впервые появился в Windows PowerShell 3.0.

Примеры

Пример 1. Запуск командлета в качестве рабочего процесса

Invoke-AsWorkflow -PSComputerName (Get-Content Servers.txt) -CommandName Get-ExecutionPolicy

PSComputerName                     PSSourceJobInstanceId                   Value
--------------                     ---------------------                   -----
Server01                           77b1cdf8-8226-4662-9067-cd2fa5c3b711    AllSigned
Server02                           a33542d7-3cdd-4339-ab99-0e7cd8e59462    Unrestricted
Server03                           279bac28-066a-4646-9497-8fcdcfe9757e    AllSigned
localhost                          0d858009-2cc4-47a4-a2e0-da17dc2883d0    RemoteSigned

Эта команда выполняет Get-ExecutionPolicy командлет как рабочий процесс на сотнях компьютеров.

Команда использует параметр CommandName , чтобы указать командлет, который выполняется в рабочем процессе. В нем используется общий параметр рабочего процесса PSComputerName , чтобы указать компьютеры, на которых выполняется команда. Значение параметра PSComputerName — это Get-Content команда, которая получает список имен компьютеров из файла Servers.txt. Значение параметра заключено в скобки, чтобы направить Windows PowerShell для выполнения Get-Command команды перед использованием значения.

Как в случае со всеми удаленными командами, если команда выполняется на локальном компьютере (если локальный компьютер указан в значении параметра PSComputerName), необходимо запустить Windows PowerShell с помощью параметра "Запуск от имени администратора".

Пример 2. Запуск командлета с параметрами

$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5

Первая команда использует Import-Csv командлет для создания объекта из содержимого в файле Servers.csv. Команда использует Header параметр для создания ServerName свойства для столбца, содержащего имена целевых компьютеров, также известных как "удаленные узлы". Команда сохраняет результат в переменной $s .

Вторая команда использует Invoke-AsWorkflow рабочий Get-ExecutionPolicy процесс для выполнения команды на компьютерах в файле Servers.csv. Команда использует параметр CommandName для Invoke-AsWorkflow указания команды для выполнения в рабочем процессе. Он использует Parameter параметр для указания Scope параметра Invoke-AsWorkflow Get-ExecutionPolicy командлета со значением Process. Команда также использует PSConnectionRetryCount общий параметр рабочего процесса, чтобы ограничить команду пятью попытками на каждом компьютере и PSComputerName общим параметром рабочего процесса, чтобы указать имена удаленных узлов (целевые компьютеры). Значение PSComputerName параметра — это выражение, которое получает ServerName свойство каждого объекта в переменной $s .

Эти команды выполняют команду как рабочий Get-ExecutionPolicy процесс на сотнях компьютеров. Команда использует Scope параметр командлета Get-ExecutionPolicy со значением Process , чтобы получить политику выполнения в текущем сеансе.

Пример 3. Запуск выражения в качестве рабочего процесса

Invoke-AsWorkflow -Expression "ipconfig /all" -PSComputerName (Get-Content DomainControllers.txt) -AsJob -JobName IPConfig

Id     Name          PSJobTypeName   State         HasMoreData   Location                Command
--     ----          -------------   -----         -----------   --------                -------
2      IpConfig      PSWorkflowJob   Completed     True          Server01, Server01...   Invoke-AsWorkflow

Эта команда использует Invoke-AsWorkflow рабочий процесс для выполнения команды Ipconfig в качестве задания рабочего процесса на компьютерах, перечисленных в файле DomainControllers.txt.

Команда использует Expression параметр для указания выражения для выполнения. Он использует общий PSComputerName параметр рабочего процесса для указания имен удаленных узлов (целевых компьютеров).

Команда также использует AsJob JobName общие параметры рабочего процесса для запуска рабочего процесса в качестве фонового задания на каждом компьютере с именем задания Ipconfig.

Команда возвращает ContainerParentJob объект (System.Management.Automation.ContainerParentJob), содержащий задания рабочего процесса на каждом компьютере.

Параметры

-CommandName

Выполняет указанный командлет или дополнительную функцию как рабочий процесс. Введите имя командлета или функции, например Update-Help, Set-ExecutionPolicyили Set-NetFirewallRule.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Expression

Указывает выражение, которое этот командлет выполняется в качестве рабочего процесса. Введите выражение в виде строки, например "ipconfig /all". Если выражение содержит пробелы или специальные символы, необходимо заключить его в кавычки.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputObject

Используется для выполнения входных данных конвейера.

Тип:Object
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Parameter

Задает параметры и значения параметров команды, указанной в параметре CommandName . Введите хэш-таблицу, в которой каждый ключ является именем параметра, а его значением является значение параметра, например @{ExecutionPolicy="AllSigned"}.

Сведения о хэш-таблицах см. в about_Hash_Tables.

Тип:Hashtable
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

Object

Вы можете передать любой объект в этот командлет.

Выходные данные

None

Эта команда не возвращает собственные выходные данные, но рабочий процесс, который выполняется, может возвращать выходные данные.