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


Invoke-AsWorkflow

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

Синтаксис

Command (По умолчанию)

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

Expression

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 — это команда , которая получает список имен компьютеров из файла 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 commandNameInvoke-AsWorkflow, чтобы указать команду, выполняемую в рабочем процессе. Он использует параметр ParameterInvoke-AsWorkflow для указания параметра Scope командлета 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
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

Command
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Expression

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

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

Expression
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-InputObject

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

Свойства параметров

Тип:Object
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Parameter

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

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

Свойства параметров

Тип:Hashtable
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

Command
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

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

Object

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

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

None

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