Start-Job
Запускает фоновое задание PowerShell.
Синтаксис
Start-Job
[-Name <String>]
[-ScriptBlock] <ScriptBlock>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Start-Job
[-DefinitionName] <String>
[[-DefinitionPath] <String>]
[[-Type] <String>]
[<CommonParameters>]
Start-Job
[-Name <String>]
[-Credential <PSCredential>]
[-FilePath] <String>
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Start-Job
[-Name <String>]
[-Credential <PSCredential>]
-LiteralPath <String>
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Start-Job
[-VMGuid] <Guid[]>
[<CommonParameters>]
Start-Job
[-VMGuid] <Guid[]>
[<CommonParameters>]
Start-Job
-VMName <String[]>
[<CommonParameters>]
Start-Job
-VMName <String[]>
[<CommonParameters>]
Описание
Командлет Start-Job
запускает фоновое задание PowerShell на локальном компьютере.
Фоновое задание PowerShell выполняет команду без взаимодействия с текущим сеансом. При запуске фонового задания объект задания возвращается немедленно, даже если для выполнения задания требуется более длительное время. Пока задание выполняется, можно продолжать работу с данным сеансом.
Объект job содержит полезные сведения о задании, но не содержит результаты задания.
По завершении задания используйте Receive-Job
командлет , чтобы получить результаты задания. Дополнительные сведения о фоновых заданиях см. в разделе about_Jobs.
Чтобы запустить фоновое задание на удаленном компьютере, используйте параметр AsJob , доступный во многих командлетах, или Invoke-Command
командлет для выполнения команды на удаленном Start-Job
компьютере. Дополнительные сведения см. в разделе about_Remote_Jobs.
Начиная с PowerShell 3.0, Start-Job
можно запускать экземпляры настраиваемых типов заданий, таких как запланированные задания. Сведения об использовании Start-Job
для запуска заданий с настраиваемыми типами см. в справочных документах для функции типа задания.
Примеры
Пример 1. Запуск фонового задания
В этом примере запускается задание, которое выполняется в фоновом режиме на локальном компьютере.
Start-Job -ScriptBlock {Get-Process}
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Process
Start-Job
использует параметр ScriptBlock для запуска Get-Process
в качестве фонового задания. Отображаются сведения о задании, и PowerShell возвращается в запрос, пока задание выполняется в фоновом режиме.
Пример 2. Запуск задания с помощью Invoke-Command
В этом примере выполняется задание на нескольких компьютерах. Задание хранится в переменной и выполняется с использованием имени переменной в командной строке PowerShell.
$jobWRM = Invoke-Command -ComputerName (Get-Content -Path C:\Servers.txt) -ScriptBlock {
Get-Service -Name WinRM } -JobName WinRM -ThrottleLimit 16 -AsJob
Задание, использующее Invoke-Command
, создается и сохраняется в переменной $jobWRM
. Invoke-Command
использует параметр ComputerName , чтобы указать компьютеры, на которых выполняется задание. Get-Content
получает имена серверов из C:\Servers.txt
файла.
Параметр ScriptBlock указывает команду, которая Get-Service
получает службу WinRM . Параметр JobName указывает понятное имя задания WinRM. Параметр ThrottleLimit ограничивает количество параллельных команд до 16. Параметр AsJob запускает фоновое задание, которое выполняет команду на серверах.
Пример 3. Получение сведений о задании
Этот пример получает сведения о задании и отображает результаты выполненного задания, которое было выполнено на локальном компьютере.
$j = Start-Job -ScriptBlock { Get-WinEvent -Log System } -Credential Domain01\User01
$j | Select-Object -Property *
State : Completed
HasMoreData : True
StatusMessage :
Location : localhost
Command : Get-WinEvent -Log System
JobStateInfo : Completed
Finished : System.Threading.ManualResetEvent
InstanceId : 27ce3fd9-40ed-488a-99e5-679cd91b9dd3
Id : 18
Name : Job18
ChildJobs : {Job19}
PSBeginTime : 8/8/2019 14:41:57
PSEndTime : 8/8/2019 14:42:07
PSJobTypeName : BackgroundJob
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
Information : {}
Start-Job
использует параметр ScriptBlock для выполнения команды, указывающей Get-WinEvent
для получения системного журнала. Параметр Credential указывает учетную запись пользователя домена с разрешением на выполнение задания на компьютере. Объект задания хранится в переменной $j
.
Объект в переменной $j
отправляется по конвейеру в Select-Object
. Параметр Property задает звездочку (*
) для отображения всех свойств объекта задания.
Пример 4. Запуск скрипта в качестве фонового задания
В этом примере скрипт на локальном компьютере выполняется в качестве фонового задания.
Start-Job -FilePath C:\Scripts\Sample.ps1
Start-Job
использует параметр FilePath для указания файла скрипта, хранящегося на локальном компьютере.
Пример 5. Получение процесса с помощью фонового задания
В этом примере используется фоновое задание для получения указанного процесса по имени.
Start-Job -Name PShellJob -ScriptBlock { Get-Process -Name PowerShell }
Start-Job
использует параметр Name для указания понятного имени задания PShellJob. Параметр ScriptBlock указывает Get-Process
на получение процессов с именем PowerShell.
Пример 6. Сбор и сохранение данных с помощью фонового задания
В этом примере запускается задание, которое собирает большой объем данных карты, а затем сохраняет их в .tif
файле.
Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {
Get-Map -Name * | Set-Content -Path D:\Maps.tif } -RunAs32
Start-Job
использует параметр Name для указания понятного имени задания GetMappingFiles. Параметр InitializationScript запускает блок скрипта, который импортирует модуль MapFunctions . Параметр ScriptBlock запускает Get-Map
и Set-Content
сохраняет данные в расположении, указанном параметром Path . Параметр RunAs32 запускает процесс как 32-разрядную версию даже в 64-разрядной операционной системе.
Пример 7. Передача входных данных в фоновое задание
В этом примере для обработки входного объекта используется $input
автоматическая переменная. Используйте Receive-Job
для просмотра выходных данных задания.
Start-Job -ScriptBlock { Get-Content $input } -InputObject "C:\Servers.txt"
Receive-Job -Name Job45 -Keep
Server01
Server02
Server03
Server04
Start-Job
использует параметр ScriptBlock для запуска Get-Content
с автоматической переменной $input
. Переменная $input
получает объекты из параметра InputObject . Receive-Job
использует параметр Name для указания задания и выводит результаты. Параметр Keep сохраняет выходные данные задания, чтобы их можно было просмотреть снова во время сеанса PowerShell.
Параметры
-ArgumentList
Задает массив аргументов или значений параметров для скрипта, заданного параметром FilePath .
Так как все значения, следующие за именем параметра ArgumentList , интерпретируются как значения ArgumentList, укажите этот параметр в качестве последнего параметра в команде.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
Указывает механизм, используемый для проверки подлинности учетных данных пользователя.
Ниже приведены допустимые значения для этого параметра.
- Default
- Basic
- Credssp
- Digest (дайджест)
- Kerberos
- Согласование
- NegotiateWithImplicitCredential
Значение по умолчанию — Default.
Проверка подлинности CredSSP доступна только в Windows Vista, Windows Server 2008 и более поздних версиях операционной системы Windows.
Дополнительные сведения о значениях этого параметра см. в разделе AuthenticationMechanism.
Внимание!
Аутентификация CredSSP, в рамках которой учетные данные пользователя передаются на удаленный компьютер для проверки, предназначена для команд, требующих аутентификацию нескольких ресурсов, например для доступа к удаленной сетевой папке. Этот механизм повышает риск безопасности удаленной операции. Если удаленный компьютер скомпрометирован, учетные данные, передаваемые ему, могут использоваться для управления сетевым сеансом.
Type: | AuthenticationMechanism |
Accepted values: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | Default |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Указывает учетную запись пользователя с разрешением на выполнение этого действия. Если параметр Credential не указан, команда использует учетные данные текущего пользователя.
Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential , например объект из командлета Get-Credential
.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DefinitionName
Указывает имя определения задания, запускаемого этим командлетом. Используйте этот параметр для запуска заданий настраиваемых типов, имеющих имя определения, например запланированных заданий.
Если вы используете для Start-Job
запуска экземпляра запланированного задания, задание запускается немедленно, независимо от триггеров и параметров задания. Результирующий экземпляр задания является запланированным заданием, но не сохраняется на диске, как активированные запланированные задания. Параметр ArgumentList нельзя использовать для предоставления значений Start-Job
параметров скриптов, выполняемых в запланированном задании. Дополнительные сведения см. в разделе about_Scheduled_Jobs.
Этот параметр появился в PowerShell 3.0.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DefinitionPath
Указывает путь к определению для задания, запускаемого этим командлетом. Введите путь определения. Объединение значений параметров DefinitionPath и DefinitionName — это полный путь к определению задания. Используйте этот параметр для запуска заданий настраиваемых типов, которые имеют путь к определению, например запланированных заданий.
Для запланированных заданий значение параметра DefinitionPath равно $home\AppData\Local\Windows\PowerShell\ScheduledJob
.
Этот параметр появился в PowerShell 3.0.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Задает локальный скрипт, который Start-Job
выполняется в качестве фонового задания. Введите путь и имя файла скрипта или используйте конвейер для отправки пути к скрипту Start-Job
в . Сценарий должен находиться на локальном компьютере или в папке, доступ к которым имеет локальный компьютер.
При использовании этого параметра PowerShell преобразует содержимое указанного файла скрипта в блок скрипта и запускает его в качестве фонового задания.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InitializationScript
Указывает команды, выполняемые перед запуском задания. Чтобы создать блок скрипта, заключите команды в фигурные скобки ({}
).
Используйте этот параметр для подготовки сеанса, в рамках которого выполняется задание. Например, его можно использовать для добавления в сеанс функций, оснасток и модулей.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Указывает входные данные команды. Введите переменную, содержащую объекты, либо введите команду или выражение для создания объектов.
В значении параметра ScriptBlock используйте автоматическую $input
переменную для представления входных объектов.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Указывает локальный скрипт, который этот командлет выполняет в качестве фонового задания. Введите путь к скрипту на локальном компьютере.
Start-Job
использует значение параметра LiteralPath в том виде, в котором он введен. Никакие символы не распознаются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки предписывают PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Указывает понятное имя нового задания. Имя можно использовать для идентификации задания в других командлетах задания, таких как Stop-Job
командлет .
Понятное имя по умолчанию — Job#
, где #
— порядковый номер, который увеличивается для каждого задания.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-PSVersion
Указывает версию. Start-Job
запускает задание с версией PowerShell. Допустимые значения для этого параметра: 2.0
и 3.0
.
Этот параметр появился в PowerShell 3.0.
Type: | Version |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunAs32
Указывает, что Start-Job
выполняет задание в 32-разрядном процессе. RunAs32 принудительно выполняет задание в 32-разрядном процессе даже в 64-разрядной операционной системе.
В 64-разрядных версиях Windows 7 и Windows Server 2008 R2, если Start-Job
команда включает параметр RunAs32 , нельзя использовать параметр Credential для указания учетных данных другого пользователя.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptBlock
Указывает команды, которые нужно выполнить в фоновом задании. Чтобы создать блок скрипта, заключите команды в фигурные скобки ({}
). Используйте автоматическую $input
переменную для доступа к значению параметра InputObject . Это обязательный параметр.
Type: | ScriptBlock |
Aliases: | Command |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Type
Указывает пользовательский тип для заданий, запущенных .Start-Job
Введите имя настраиваемого типа задания, например PSScheduledJob для запланированных заданий или PSWorkflowJob для заданий рабочих процессов. Этот параметр недопустим для стандартных фоновых заданий.
Этот параметр появился в PowerShell 3.0.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
Конвейер можно использовать для отправки объекта со свойством Name в параметр Name . Например, можно конвейерировать объект FileInfo из Get-ChildItem
в Start-Job
.
Выходные данные
System.Management.Automation.PSRemotingJob
Start-Job
возвращает объект PSRemotingJob , представляющий запущенное задание.
Примечания
Для запуска в фоновом режиме Start-Job
выполняется в отдельном сеансе текущего сеанса. При использовании командлета Invoke-Command
для выполнения Start-Job
команды в сеансе на удаленном компьютере Start-Job
выполняется в сеансе удаленного сеанса.