РАЗДЕЛ
	about_Remote_Jobs

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

ПОДРОБНОЕ ОПИСАНИЕ
	Фоновое задание - это команда, которая выполняется асинхронно без 
	взаимодействия с текущим сеансом. Командная строка отображается 
	мгновенно, что позволяет продолжать работу в сеансе во время 
	выполнения задания.

	По умолчанию фоновые задания выполняются на локальном компьютере. 
	Однако можно использовать несколько различных процедур для 
	выполнения фоновых заданий на удаленных компьютерах. 

	В этом разделе описано, как выполнить фоновое задание на 
	удаленном компьютере. Дополнительные сведения о запуске фоновых 
	заданий на локальном компьютере см. в разделе about_Jobs. 
	Дополнительные сведения о фоновых заданиях см. в разделе 
	about_Job_Details.


 УДАЛЕННЫЕ ФОНОВЫЕ ЗАДАНИЯ

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

	-- Создание интерактивного сеанса с удаленным компьютером и 
	 запуск задания в этом сеансе. Процедуры аналогичны выполнению 
	 локального задания, хотя все действия выполняются на удаленном 
	 компьютере.

	-- Выполнение фонового задания на удаленном компьютере, который 
	 возвращает результаты на локальный компьютер. Используйте этот 
	 способ при необходимости сбора результатов выполнения фоновых 
	 заданий и сохранения их в центральном местоположении на 
	 локальном компьютере.

	-- Выполнение фонового задания на удаленном компьютере с 
	 сохранением на нем результатов. Используйте этот способ, 
	 если требуется более надежное хранение данных задания на 
	 компьютере, на котором они были получены.  


 ЗАПУСК ФОНОВОГО ЗАДАНИЯ В ИНТЕРАКТИВНОМ СЕАНСЕ

	Можно начать интерактивный сеанс с удаленным компьютером и 
	запустить фоновое задание в этом сеансе. Дополнительные сведения 
	об интерактивных сеансах см. в разделах about_Remote и 
	Enter-PSSession.

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


	ШАГ 1: ENTER-PSSESSION

	Используйте командлет Enter-PSSession, чтобы начать интерактивный 
	сеанс с удаленным компьютером. Можно использовать параметр 
	ComputerName командлета Enter-PSSession для установления 
	временного подключения к интерактивному сеансу. Или можно 
	использовать параметр Session для создания интерактивного сеанса 
	в сеансе Windows PowerShell (PSSession). 

	Следующая команда начинает интерактивный сеанс на компьютере Server01.
  
		C:\PS> Enter-PSSession -computername Server01

	Командная строка изменяется, чтобы указать, что установлено 
	подключение к компьютеру Server01.

		Server01\C:>


	ШАГ 2: START-JOB

	Используйте командлет Start-Job, чтобы запустить фоновое задание 
	в сеансе.

	Следующая команда запускает фоновое задание, которое получает 
	события в журнале событий Windows PowerShell на компьютере 
	Server01. Командлет Start-Job возвращает объект, представляющий 
	задание. 

	Эта команда сохраняет объект задания в переменной $job. 

		Server01\C:> $job = start-job -scriptblock {get-eventlog "Windows PowerShell"}
   
	Во время выполнения задания можно использовать интерактивный 
	сеанс для выполнения других команд, включая другие фоновые 
	задания. Однако интерактивный сеанс должен оставаться открытым до 
	завершения фонового задания. В случае завершения сеанса задание 
	прерывается и результаты теряются.



	ШАГ 3: GET-JOB

	Чтобы проверить, выполнено ли задание, отобразите значение 
	переменной $job или используйте командлет Get-Job для получения 
	задания. В следующей команде используется командлет Get-Job для 
	отображения задания.

		Server01\C:> get-job $job

		SessionId  Name  State	HasMoreData  Location   Command
		---------  ----  -----	-----------  --------   -------
		1		Job1  Complete   True		 localhost  get-eventlog "Windows PowerShell"
   
	Выходные данные командлета Get-Job показывают, что задание 
	выполняется на компьютере "localhost", поскольку задание было 
	запущено и выполняется на одном и том же компьютере (в данном 
	случае на компьютере Server01).



	ШАГ 4: RECEIVE-JOB

	Используйте командлет Receive-Job, чтобы получить результаты 
	выполнения задания. Результаты можно отобразить в интерактивном 
	сеансе или сохранить в файле на удаленном компьютере. Следующая 
	команда получает результат выполнения задания, сохраненного в 
	переменной $job. Оператор перенаправления (>) используется для 
	сохранения результатов выполнения задания в файле PsLog.txt на 
	компьютере Server01.

		Server01\C:> receive-job $job > c:\logs\PsLog.txt



	ШАГ 5: EXIT-PSSESSION

	Используйте командлет Exit-PSSession, чтобы завершить 
	интерактивный сеанс. Командная строка изменяется, чтобы указать, 
	что выполнен возврат к исходному сеансу на локальном компьютере.

		Server01\C:> Exit-PSSession
		C:\PS>
		 


	ШАГ 6: INVOKE-COMMAND, GET-CONTENT
	 
	Для просмотра содержимого файла PsLog.txt на компьютере Server01 
	в любое время начните другой интерактивный сеанс или выполните 
	удаленную команду. Команду этого типа лучше всего выполнять в 
	сеансе PSSession (постоянное подключение), если требуется 
	использовать несколько команд для просмотра данных в файле 
	PsLog.txt и управления ими. Дополнительные сведения о сеансах 
	PSSession см. в разделе about_PSSessions.

	В следующих командах используется командлет New-PSSession для 
	создания сеанса PSSession, который подключается к компьютеру 
	Server01, и командлет Invoke-Command для выполнения команды 
	Get-Content в сеансе PSSession с целью просмотра содержимого файла.

		C:\PS> $s = new-pssession -computername Server01
		C:\PS> invoke-command -session $s -scriptblock {get-content c:\logs\pslog.txt}


	 
 ЗАПУСК УДАЛЕННОГО ЗАДАНИЯ, ВОЗВРАЩАЮЩЕГО РЕЗУЛЬТАТЫ НА ЛОКАЛЬНЫЙ 
 КОМПЬЮТЕР (ASJOB)

	Чтобы запустить фоновое задание на удаленном компьютере, 
	возвращающем результаты выполнения команды на локальный 
	компьютер, используйте параметр AsJob какого-либо командлета, 
	например командлета Invoke-Command. 

	При использовании параметра AsJob объект задания создается на 
	локальном компьютере, даже если само задание выполняется на 
	удаленном компьютере. После завершения задания результаты 
	возвращаются на локальный компьютер. 

	Для управления каким-либо заданием, созданным любым командлетом, 
	можно использовать командлеты, в именах которых содержится 
	существительное Job (командлеты Job). Большое количество 
	командлетов, имеющих параметр AsJob, не использует удаленное 
	взаимодействие Windows PowerShell, поэтому эти командлеты можно 
	использовать даже на компьютерах, которые не настроены на 
	удаленное взаимодействие и не соответствуют требованиям для 
	удаленного взаимодействия Windows PowerShell.
 

	ШАГ 1: INVOKE-COMMAND -ASJOB

	В следующей команде с помощью параметра AsJob командлета 
	Invoke-Command запускается фоновое задание на компьютере 
	Server01. Задание выполняет команду Get-Eventlog, которая 
	получает события из журнала системных событий. Можно использовать 
	параметр JobName, чтобы назначить заданию отображаемое имя.

	 invoke-command -computername Server01 -scriptblock {get-eventlog system} -asjob 

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


	 SessionId   Name	State	HasMoreData	 Location   Command
	 ---------   ----	-----	-----------	 --------   -------
	 1		 Job1	Running	True			Server01   get-eventlog system


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

	Обратите внимание, что значение свойства Location указывает, 
	что задание выполнялось на компьютере Server01.  


	ШАГ 2: GET-JOB

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

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

		get-job

	Поскольку удаленное задание было запущено в текущем сеансе, 
	локальная команда Get-Job получает задание. Свойство State 
	объекта задания показывает, что команда выполнена успешно.
	 
	 SessionId   Name   State	HasMoreData	 Location   Command
	 ---------   ----   -----	-----------	 --------   -------
	 1		 Job1   Completed  True			Server01   get-eventlog system



	ШАГ 3: RECEIVE-JOB

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

	В следующей команде используется командлет Receive-Job для 
	получения результатов выполнения задания. Для определения задания 
	используется идентификатор сеанса. Эта команда сохраняет 
	результаты выполнения задания в переменной $results. Кроме того, 
	результаты можно перенаправить в файл.

	 $results = receive-job -id 1



 ЗАПУСК УДАЛЕННОГО ЗАДАНИЯ С СОХРАНЕНИЕМ РЕЗУЛЬТАТОВ НА УДАЛЕННОМ 
 КОМПЬЮТЕРЕ

	Чтобы запустить фоновое задание на удаленном компьютере с 
	сохранением на нем результатов выполнения команды, используйте 
	командлет Invoke-Command для выполнения команды Start-Job на 
	удаленном компьютере. Этот способ можно использовать для 
	выполнения фоновых заданий на нескольких компьютерах.

	При удаленном запуске команды Start-Job объект задания создается 
	на удаленном компьютере и результаты выполнения задания 
	сохраняются на удаленном компьютере.
	С точки зрения задания все операции являются локальными. 
	Пользователь просто выполняет команды удаленно для управления 
	локальным заданием на удаленном компьютере.


	ШАГ 1: INVOKE-COMMAND START-JOB

	Используйте командлет Invoke-Command, чтобы выполнить команду 
	Start-Job на удаленном компьютере. 

	Для этой команды требуется сеанс PSSession (постоянное 
	подключение). При использовании параметра ComputerName командлета 
	Invoke-Command для установления временного подключения команда 
	Invoke-Command считается выполненной, если объект задания 
	возвращен. В результате временное подключение закрывается 
	и задание отменяется.
 
	В следующей команде с помощью командлета New-PSSession создается 
	сеанс PSSession, подключенный к компьютеру Server01. Команда 
	сохраняет сеанс PSSession в переменной $s.

		$s = new-pssession -computername Server01


	В следующей команде с помощью командлета Invoke-Command 
	выполняется команда Start-Job в сеансе PSSession. Команды 
	Start-Job и Get-Eventlog заключаются в фигурные скобки.

	 invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog system}}

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


	 Id	 Name	State	HasMoreData	 Location   Command
	 --	 ----	-----	-----------	 --------   -------
	 2		Job2	Running	True			Localhost  get-eventlog system


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

	Обратите внимание, что значение свойства Location указывает, что 
	задание выполнялось на локальном компьютере "LocalHost", несмотря 
	на то что в действительности оно выполнялось на компьютере 
	Server01. Поскольку объект задания создается на компьютере 
	Server01 и задание выполняется на этом же компьютере, оно 
	считается локальным фоновым заданием.  


	ШАГ 2: INVOKE-COMMAND GET-JOB

	Для управления удаленным фоновым заданием используйте командлеты 
	Job. Поскольку объект задания находится на удаленном компьютере, 
	необходимо выполнять удаленные команды для получения, остановки, 
	ожидания или извлечения результатов выполнения задания.  

	Чтобы определить, выполнено ли задание, используйте командлет 
	Invoke-Command для выполнения команды Get-Job в сеансе PSSession, 
	подключенном к компьютеру Server01.

		invoke-command -session $s -scriptblock {get-job}

	Команда возвращает объект задания. Свойство State объекта задания 
	показывает, что команда выполнена успешно. 

	 SessionId	 Name	State	HasMoreData	 Location   Command
	 ---------	 ----	-----	-----------	 --------   -------
	 2			 Job2	Completed  True			LocalHost  get-eventlog system


	ШАГ 3: INVOKE-COMMAND RECEIVE-JOB

	Используйте командлет Invoke-Command для выполнения команды 
	Receive-Job в сеансе PSSession, подключенном к компьютеру 
	Server01, чтобы получить результаты выполнения задания.

	В следующей команде используется командлет Receive-Job для 
	получения результатов выполнения задания. Для определения задания 
	используется идентификатор сеанса. Эта команда сохраняет 
	результаты выполнения задания в переменной $results. Параметр 
	Keep командлета Receive-Job используется для сохранения 
	результата в кэше заданий на удаленном компьютере.

		$results = invoke-command -session $s -scriptblock {receive-job -sessionid 2 -keep}

	Кроме того, можно перенаправить результаты в файл на локальном 
	или удаленном компьютере. В следующей команде используется 
	оператор перенаправления для сохранения результатов в файле на 
	компьютере Server01.

		invoke-command -session $s -command {receive-job -sessionid 2 > c:\logs\pslog.txt}


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