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 |
Входные данные
Вы можете передать любой объект в этот командлет.
Выходные данные
None
Эта команда не возвращает собственные выходные данные, но рабочий процесс, который выполняется, может возвращать выходные данные.
Связанные ссылки
PowerShell