РАЗДЕЛ
  about_Job_Details

КРАТКОЕ ОПИСАНИЕ
  Содержит сведения о фоновых заданиях на локальных и удаленных 
  компьютерах.

ПОДРОБНОЕ ОПИСАНИЕ
   В этом разделе описаны принципы работы фоновых заданий и приведены 
   технические сведения о работе фоновых заданий в Windows PowerShell.

   Этот раздел дополняет разделы about_Jobs и about_Remote_Jobs.

   Важно: фоновые задания, запущенные с помощью команды Start-Job или 
   параметра AsJob команды Invoke-Command, используют инфраструктуру 
   удаленного взаимодействия Windows PowerShell. Для использования 
   этих функций необходимо настроить в Windows PowerShell удаленное 
   взаимодействие, даже если фоновое задание выполняется только на локальном 
   компьютере. Дополнительные сведения см. в разделе about_Remote_Requirements.


 ФОНОВЫЕ ЗАДАНИЯ
	Фоновое задание выполняет команду или выражение асинхронно. Оно может 
	выполнять командлеты, функции, скрипты или другие задачи на базе 
	команд. Фоновые задания предназначены для запуска команд, выполнение 
	которых занимает продолжительное время, но их можно использовать для 
	запуска любых команд в фоновом режиме.

	При выполнении синхронной команды командная строка Windows PowerShell 
	отключается, пока команда не будет завершена, в то время как при 
	использовании фоновых задании командная строка Windows PowerShell не 
	отключается. Команда, запускающая фоновое задание, возвращает объект 
	задания. Командная строка становится доступной сразу же, поэтому во 
	время выполнения фонового задания можно работать с другими задачами.
  
	Однако при запуске фонового задания результаты не возвращаются 
	немедленно, даже если задание выполняется очень быстро. 
	Возвращаемый объект задания содержит полезные сведения о задании, 
	но не содержит результатов выполнения задания. Необходимо 
	выполнить отдельную команду, чтобы получить результаты задания. 
	Кроме того, можно выполнить команду, чтобы остановить задание, 
	дождаться завершения задания или удалить задание.

	Чтобы синхронизация фонового задания не зависела от других 
	команд, каждое фоновое задание выполняется в собственной среде Windows 
	PowerShell ("сеансе"). Это может быть как временное подключение, 
	которое создается только для выполнения задания, а потом 
	уничтожается, так и постоянный сеанс (PSSession), который можно 
	использовать для выполнения нескольких связанных заданий и команд.


 ИСПОЛЬЗОВАНИЕ КОМАНДЛЕТОВ JOB
	Для запуска фонового задания на локальном компьютере служит 
	команда Start-Job. Команда Start-Job возвращает объект задания. 
	Кроме того, объекты заданий, запущенных на локальном компьютере, можно 
	получить с помощью командлета Get-Job.

	Чтобы получить результаты задания, следует использовать командлет 
	Receive-Job. Если задание не завершено, командлет Receive-Job 
	возвращает частичные результаты. Кроме того, можно использовать 
	командлет Wait-Job, который отключает командную строку, пока одно 
	или все запущенные в сеансе задания не будут завершены.

	Для остановки фоновых заданий используется командлет Stop-Job. 
	Для удаления заданий используется командлет Remove-Job.

	Дополнительные сведения о работе командлетов см. в разделах справки, 
	посвященных соответствующим командлетам, а также в разделе about_Jobs.

 
 ЗАПУСК ФОНОВЫХ ЗАДАНИЙ НА УДАЛЕННЫХ КОМПЬЮТЕРАХ
	Создавать фоновые задания и управлять ими можно как на локальном, 
	так и на удаленном компьютере. Чтобы запустить фоновое задание 
	удаленно, следует воспользоваться параметром AsJob командлета, 
	например командлета Invoke-Command, или с помощью командлета 
	Invoke-Command удаленно выполнить команду Start-Job. Кроме того, 
	фоновые задания можно запускать в интерактивных сеансах.

	Дополнительные сведения об удаленных фоновых заданиях см. в разделе 
	about_Remote_Jobs.


 ДОЧЕРНИЕ ЗАДАНИЯ
	Каждое фоновое задание состоит из родительского задания и одного или 
	нескольких дочерних заданий. В заданиях, запускаемых с помощью 
	команды Start-Job или параметра AsJob командлета Invoke-Command, 
	родительское задание является ведущим. Оно не выполняет никаких 
	команд и не возвращает никаких результатов. Реальные команды 
	выполняются дочерними заданиями. (Задания, запускаемые с помощью 
	других командлетов, могут работать иначе.)

	Дочерние задания хранятся в свойстве ChildJobs объекта 
	родительского задания. Свойство ChildJobs может содержать один 
	или несколько объектов дочерних заданий. У объектов дочерних 
	заданий имеются имя, идентификатор и идентификатор экземпляра, которые 
	отличаются от родительского задания, поэтому родительскими и 
	дочерними заданиями можно управлять по отдельности или как единым целым.

	Чтоб определить родительские и дочерние задания внутри задания, 
	следует использовать командлет Get-Job, чтобы получить 
	родительское задание, а затем по конвейеру передать это задание 
	команде Format-List, которая выведет значения свойств Name и ChildJobs 
	объектов, как показано в следующей команде.

		C:\PS> get-job | format-list -property Name, ChildJobs

		Name		: Job1
		ChildJobs	 : {Job2}


	Кроме того, можно использовать команду Get-Job с дочерним 
	заданием, как показано ниже:

		C:\PS> get-job job2

		Id	Name   State	HasMoreData   Location	Command
		--	----   -----	-----------   --------	-------
		2	 Job2   Completed  True		localhost   get-process


	Конфигурация дочернего задания зависит от команды, с помощью которой 
	запускается задание.

	 -- При запуске задания на локальном компьютере с помощью 
		команды Start-Job задание состоит из ведущего родительского 
		задания и дочернего задания, которое выполняет команды.

	 -- При запуске задания на одном или нескольких компьютерах с 
		помощью параметра AsJob команды Invoke-Command задание 
		состоит из ведущего родительского задания и дочернего 
		задания для каждого задания, выполняемого на каждом из 
		компьютеров.

	 -- При выполнении команды Start-Job на одном или нескольких 
		удаленных компьютерах с помощью команды Invoke-Command 
		результат не отличается от выполнения локальной команды на 
		каждом из удаленных компьютеров. Команда возвращает объект 
		задания для каждого компьютера. Объект задания состоит из 
		ведущего родительского задания и одного дочернего задания, 
		которое выполняет команду.

	Родительское задание представляет все дочерние задания. При управлении 
	родительским заданием также происходит управление связанными с ним 
	дочерними заданиями. Например, если остановить родительское задание, 
	все дочерние задания также будут остановлены. Если получить результаты 
	родительского задания, будут получены результаты всех дочерних заданий.

	Однако дочерними заданиями можно управлять и по отдельности. Это 
	бывает особенно полезно, если требуется разобраться в проблеме с 
	заданием или получить результаты только для одного из нескольких 
	дочерних заданий, запущенных с помощью параметра AsJob командлета 
	Invoke-Command. (Обратный апостроф (`) является знаком 
	продолжения строки.)

	В следующей команде с помощью параметра AsJob командлета 
	Invoke-Command запускаются фоновые задания на локальном 
	компьютере и двух удаленных компьютерах. Команда сохраняет 
	задание в переменной $j.

		C:\PS> $j = invoke-command -computername localhost, Server01, Server02 `
			 -command {get-date} -AsJob

	При отображении свойств Name и ChildJob задания в переменной $j 
	видно, что команда вернула объект задания с тремя дочерними 
	заданиями, по одному на каждый компьютер.

		C:\PS> $j | format-list name, childjobs

		Name	: Job3
		ChildJobs : {Job4, Job5, Job6}


	При отображении родительского задания видно, что задание 
	закончилось сбоем.

		C:\PS> $j

		Id   Name	State   HasMoreData	 Location			 Command
		--   ----	-----   -----------	 --------			 -------
		1	Job3	Failed  True			localhost,server... get-date


	Однако при выполнении команды Get-Job для каждого из дочерних заданий 
	становится понятно, что сбоем закончилось только одно задание.

		PS C:\ps-test> get-job job4, job5, job6

		Id   Name   State	HasMoreData	 Location		 Command
		--   ----   -----	-----------	 --------		 -------
		4	Job4   Completed  True			localhost		get-date
		5	Job5   Failed	 False		 Server01		 get-date
		6	Job6   Completed  True			Server02		 get-date



	Чтобы получить результаты всех дочерних заданий, необходимо с помощью 
	командлета Receive-Job получить результаты родительского задания. Но 
	можно также получить результаты конкретного дочернего задания, как 
	показано в следующей команде.

		C:\PS> receive-job -job6 -keep | format-table ComputerName, DateTime -auto
	 
		ComputerName DateTime
		------------ --------
		Server02   Четверг, 13 марта 2008 г., 16:16:03

	Поддержка дочерних заданий в фоновых заданиях Windows PowerShell 
	обеспечивает более широкие возможности управления выполняемыми 
	заданиями.


СМ. ТАКЖЕ
	about_Jobs
	about_Remote_Jobs
	about_Remote
	Invoke-Command
	Start-Job
	Get-Job
	Wait-Job
	Stop-Job
	Remove-Job
	New-PSSession
	Enter-PSSession
	Exit-PSSession