Start-Job
Запускает фоновое задание Windows PowerShell.
Синтаксис
Start-Job [-ScriptBlock] <scriptblock> [[-InitializationScript] <scriptblock>] [-ArgumentList <Object[]>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-Credential <PSCredential>] [-InputObject <psobject>] [-Name <string>] [-RunAs32] [<CommonParameters>]
Start-Job [[-FilePath] <string>] [[-InitializationScript] <scriptblock>] [-ArgumentList <Object[]>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-Credential <PSCredential>] [-InputObject <psobject>] [-Name <string>] [-RunAs32] [<CommonParameters>]
Описание
Командлет Start-Job запускает фоновое задание Windows PowerShell на локальном компьютере.
Фоновое задание Windows PowerShell выполняет команду "в фоновом режиме" без взаимодействия с текущим сеансом. При запуске фонового задания объект задания возвращается немедленно, даже если для выполнения задания требуется значительное время. Пока задание выполняется, можно продолжать работу с данным сеансом.
Объект задания содержит полезные сведения о задании, но не содержит результатов выполнения задания. После завершения задания используйте командлет Receive-Job для получения результатов задания. Дополнительные сведения о фоновых заданиях см. в разделе about_Jobs.
Чтобы выполнить фоновое задание на удаленном компьютере, используйте параметр AsJob, имеющийся во многих командлетах, или командлет Invoke-Command для выполнения команды Start-Job на удаленном компьютере. Дополнительные сведения см. в разделе about_Remote_Jobs.
Параметры
-ArgumentList <Object[]>
Указывает аргументы (значения параметров) скрипта, заданного в параметре FilePath.
Поскольку все значения после имени параметра ArgumentList интерпретируются как значения этого параметра, он должен быть последним параметром команды.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Authentication <AuthenticationMechanism>
Задает механизм, используемый при проверке подлинности учетных данных пользователя. Допустимые значения: Default, Basic, Credssp, Digest, Kerberos, Negotiate и NegotiateWithImplicitCredential. По умолчанию используется значение "Default".
Проверка подлинности CredSSP доступна только в Windows Vista, Windows Server 2008 и более поздних версиях Windows.
Дополнительные сведения о значениях этого параметра см. в описании перечисления System.Management.Automation.Runspaces.AuthenticationMechanism в библиотеке MSDN.
ВНИМАНИЕ! Проверка подлинности CredSSP, при которой учетные данные пользователя передаются на удаленный компьютер, предназначена для команд, которые должны пройти процедуру проверки подлинности на нескольких ресурсах, например при доступе к удаленному общему сетевому ресурсу. Такой механизм повышает угрозы безопасности удаленных операций. Если безопасность удаленного компьютера нарушена, передаваемые ему учетные данные могут использоваться для управления сетевым сеансом.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Credential <PSCredential>
Задает учетную запись пользователя, который располагает разрешением для выполнения этого действия. По умолчанию используется значение "Текущий пользователь".
Введите имя пользователя, например "User01" или "Domain01\User01", или введите объект PSCredential, например объект, возвращаемый командлетом Get-Credential.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
Текущий пользователь |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-FilePath <string>
Запускает заданный локальный скрипт в качестве фонового задания. Введите путь и имя файла скрипта или передайте путь к скрипту командлету Start-Job по конвейеру. Скрипт должен находиться на локальном компьютере или в каталоге, к которому можно получить доступ с локального компьютера.
При использовании этого параметра Windows PowerShell преобразует указанный файл скрипта в блок скрипта и выполняет этот блок в качестве фонового задания.
Обязательно? |
false |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-InitializationScript <scriptblock>
Задает команды, выполняемые перед запуском задания. Чтобы создать блок скрипта, заключите команды в фигурные скобки ( { } ).
Используйте этот параметр для подготовки сеанса, в котором выполняется задание. Например, его можно использовать для добавления в сеанс функций, оснасток и модулей.
Обязательно? |
false |
Позиция? |
2 |
Значение по умолчанию |
Нет |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-InputObject <psobject>
Задает входные данные команды. Укажите переменную, содержащую объекты, либо введите команду или выражение, создающее их.
В значении параметра ScriptBlock следует использовать автоматическую переменную $input для представления входных объектов.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
-Name <string>
Задает понятное имя нового задания. Это имя можно использовать для идентификации задания в других командлетах заданий, например Stop-Job.
По умолчанию понятное имя имеет формат Job#, где символ "#" является порядковым номером, который увеличивается на единицу для каждого задания.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
Job<номер> |
Принимать входные данные из конвейера? |
true (ByPropertyName) |
Принимать подстановочные знаки? |
false |
-RunAs32
Запускает задание в 32-разрядном процессе.
Используйте этот параметр для принудительного запуска задания в 32-разрядном процессе 64-разрядной операционной системы.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
False |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-ScriptBlock <scriptblock>
Задает команды, которые требуется выполнить в фоновом задании. Чтобы создать блок скрипта, заключите команды в фигурные скобки ( { } ). Это обязательный параметр.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.String Путь к файлу можно передать командлету Start-Job по конвейеру. |
Выходные данные |
System.Management.Automation.RemotingJob Командлет Start-Job возвращает объект, представляющий запущенное им задание. |
Примечания
Для выполнения в фоновом режиме командлет Start-Job запускается в собственном сеансе в рамках текущего сеанса. Если командлет Invoke-Command используется для выполнения команды Start-Job в сеансе на удаленном компьютере, команда Start-Job выполняется в сеансе в рамках удаленного сеанса.
Пример 1
C:\PS>start-job -scriptblock {get-process}
C:\PS> start-job -command "get-process"
Id Name State HasMoreData Location Command
--- ---- ----- ----------- -------- -------
1 Job1 Running True localhost get-process
Описание
-----------
Эта команда запускает фоновое задание, которое выполняет команду Get-Process. Команда возвращает объект задания, содержащий информацию о задании. Командная строка возвращается немедленно, что позволяет работать с сеансом во время выполнения задания в фоновом режиме.
Пример 2
C:\PS>$jobWRM = invoke-command -computerName (get-content servers.txt) -scriptblock {get-service winrm} -jobname WinRM -throttlelimit 16 -AsJob
Описание
-----------
Эта команда использует командлет Invoke-Command и его параметр AsJob для запуска фонового задания, которое выполняет команду "get-service winrm" на нескольких компьютерах. Поскольку команда выполняется на сервере со значительным сетевым трафиком, в команде используется параметр ThrottleLimit командлета Invoke-Command для ограничения количества одновременно выполняемых команд до 16.
В команде используется параметр ComputerName ⌠◊◊ ∫∑, ◊ ∫⌡ ∑∫〉 задание. Значением параметра ComputerName является команда Get-Content, которая получает текст из файла Servers.txt, содержащего имена компьютеров в домене.
В команде используется параметр ScriptBlock для указания команды и параметр JobName для указания понятного имени задания.
Пример 3
C:\PS>$j = start-job -scriptblock {get-eventlog -log system} -credential domain01\user01
C:\PS> $j | format-list -property *
HasMoreData : True
StatusMessage :
Location : localhost
Command : get-eventlog -log system
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 2d9d775f-63e0-4d48-b4bc-c05d0e177f34
Id : 1
Name : Job1
ChildJobs : {Job2}
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
StateChanged :
C:\PS> $j.JobStateInfo.state
Completed
C:\PS> $results = receive-job -job $j
C:\PS> $results
Index Time Type Source EventID Message
----- ---- ---- ------ ------- -------
84366 Feb 18 19:20 Information Service Control M... 7036 The description...
84365 Feb 18 19:16 Information Service Control M... 7036 The description...
84364 Feb 18 19:10 Information Service Control M... 7036 The description...
...
Описание
-----------
Эти команды управляют фоновым заданием, которое получает все события из системного журнала средства просмотра событий. Задание выполняется на локальном компьютере.
Первая команда запускает задание с помощью командлета Start-Job. В ней используется параметр Credential для указания учетной записи пользователя, который располагает разрешениями для выполнения этого задания на компьютере. Затем команда сохраняет объект задания, возвращенный командлетом Start-Job, в переменной $j.
Далее можно продолжить работу, пока задание выполняется.
Вторая команда передает объект задания, указанный в переменной $j, в командлет Format-List с помощью оператора конвейера (|). Команда Format-List использует параметр Property со значением * (все) для отображения всех свойств объекта задания в списке.
Третья команда отображает значение свойства JobStateInfo, которое содержит состояние задания.
Четвертая команда использует командлет Receive-Job для получения результатов задания. Результат сохраняется в переменной $results.
Последняя команда отображает значение переменной $results.
Пример 4
C:\PS>start-job -filepath c:\scripts\sample.ps1
Описание
-----------
Эта команда запускает скрипт Sample.ps1 в качестве фонового задания.
Пример 5
C:\PS>start-job -name WinRm -scriptblock {get-process winrm}
Описание
-----------
Эта команда запускает фоновое задание, которое получает процесс WinRM на локальном компьютере. В команде используется параметр ScriptBlock для указания команды, которая выполняется в фоновом задании. Для задания понятного имени нового задания используется параметр Name.
Пример 6
C:\PS>start-job -name GetMappingFiles -initializationScript {import-module MapFunctions} -scriptblock {Get-Map -name * | set-content D:\Maps.tif} -runAs32
Описание
-----------
Эта команда запускает задание, собирающее большой объем данных, и сохраняет эти данные в файле TIF. Команда использует параметр InitializationScript для запуска блока скрипта, импортирующего требуемый модуль. Она также использует параметр RunAs32 для запуска задания в 32-разрядном процессе, даже если на компьютере установлена 64-разрядная операционная система.
См. также
Концепции
about_Jobs
about_Job_Details
about_Remote_Jobs
Get-Job
Receive-Job
Wait-Job
Stop-Job
Remove-Job
Invoke-Command