Получает фоновые задания Windows PowerShell, активные в текущем сеансе.

Синтаксис

Get-Job [-Command <string[]>] [<CommonParameters>]

Get-Job [[-InstanceId] <Guid[]>] [<CommonParameters>]

Get-Job [[-Name] <string[]>] [<CommonParameters>]

Get-Job [[-Id] <Int32[]>] [<CommonParameters>]

Get-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [<CommonParameters>]

Описание

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

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

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

Фоновое задание Windows PowerShell — это команда, которая выполняется "в фоновом режиме" без взаимодействия с текущим сеансом. Как правило, фоновые задания используются для выполнения сложных команд, для завершения которых требуется много времени. Дополнительные сведения о фоновых заданиях Windows PowerShell см. в разделе about_Jobs.

Параметры

-Command <string[]>

Получает задания, в которые входит заданная команда. По умолчанию возвращаются все задания. Введите команду (в формате строки). Для описания команды разрешено использовать подстановочные знаки.

Обязательно?

false

Позиция?

named

Значение по умолчанию

All jobs

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

true

-Id <Int32[]>

Получает задания с указанными идентификаторами экземпляров.

ID — это целое значение, которое однозначно определяет задание в пределах текущего сеанса. Это значение проще запомнить и ввести, чем идентификатор экземпляра, но оно уникально только в рамках текущего сеанса. Можно ввести один или несколько идентификаторов (разделенных запятыми). Чтобы найти значение идентификатора задания, введите "Get-Job" без параметров.

Обязательно?

false

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-InstanceId <Guid[]>

Получает задания с указанными идентификаторами экземпляров. По умолчанию возвращаются все задания.

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

Обязательно?

false

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

true

-Name <string[]>

Получает задания с указанными понятными именами. Введите имя задания или используйте подстановочные знаки для ввода шаблона имени задания. По умолчанию командлет Get-Job получает все задания в текущем сеансе.

Обязательно?

false

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

true

-State <JobState>

Получает задания с указанным состоянием. Допустимые значения: "NotStarted", "Running", "Completed", "Stopped", "Failed" и "Blocked". По умолчанию командлет Get-Job получает все задания в текущем сеансе.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

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

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

None

Передать входные данные этому командлету по конвейеру невозможно.

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

System.Management.Automation.RemotingJob

Командлет Get-Job возвращает объекты, представляющие задания в этом сеансе.

Пример 1

C:\PS>get-job

Description
-----------
Эта команда получает все фоновые задания, запущенные в текущем сеансе. Она не получает задания, запущенные в других сеансах, даже если эти задания выполняются на локальном компьютере.






Пример 2

C:\PS>$j = get-job -name Job1

C:\PS> $ID = $j.InstanceID

C:\PS> $ID

Guid
----
03c3232e-1d23-453b-a6f4-ed73c9e29d55

C:\PS> stop-job -instanceid $ID

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

Первая команда получает задание с помощью командлета Get-Job. Для определения задания используется параметр Name. Команда сохраняет объект задания, возвращенный командлетом Get-Job, в переменной $j. В этом примере возвращается только одно задание с заданным именем.

Вторая команда получает свойство InstanceId объекта в переменную $j и сохраняет его в переменной $ID. 

Третья команда отображает значение переменной $ID.

Четвертая команда останавливает задание с помощью командлета Stop-Job. Параметр InstanceId используется для определения задания, а переменная $ID представляет идентификатор экземпляра задания.






Пример 3

C:\PS>get-job -command "*get-process*"

Description
-----------
Эта команда возвращает задания в системе, содержащие команду Get-Process. Для ограничения числа возвращаемых заданий используется параметр Command командлета Get-Job. Для выбора заданий, в которых команда Get-Process содержится в любой позиции командной строки, используются подстановочные знаки (*).






Пример 4

C:\PS>"*get-process*" | get-job

Description
-----------
Как и команда в предыдущем примере, эта команда получает задания в системе, в которых используется команда Get-Process. Эта команда передает командлету Get-Job строку (в двойных кавычках) с помощью оператора конвейера (|). Эта команда эквивалентна предыдущей команде.






Пример 5

C:\PS>get-job -state NotStarted

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






Пример 6

C:\PS>get-job -name job*

Description
-----------
Эта команда возвращает все задания, имена которых начинаются со слова "job". Поскольку по умолчанию для задания устанавливается имя "job<число>", эта команда получает все задания, которым не было явно назначено имя.






Пример 7

C:\PS>start-job -scriptblock {get-process} -name MyJob

C:\PS> $j = get-job -name MyJob

C:\PS> $j

Id       Name      State      HasMoreData     Location    Command
--       ----      -----      -----------     --------    -------
1        myjob     Completed  True            localhost   get-process

C:\PS> receive-job -job $j

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    124       4    13572      12080    59            1140 audiodg
    783      16    11428      13636   100             548 CcmExec
     96       4     4252       3764    59            3856 ccmsetup
...

Description
-----------
В этом примере показано, как использовать командлет Get-Job для получения объекта задания, а также как использовать объект задания для представления задания в команде.

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

Во второй команде командлет Get-Job используется для получения задания. Для определения задания используется параметр Name командлета Get-Job. Полученный объект задания сохраняется в переменной $j.

Третья команда выводит значение объекта задания, сохраненное в переменной $j. Значение свойства State указывает, что задание завершено. Значение свойства HasMoreData указывает, что результаты задания пока не были получены.

Четвертая команда использует командлет Receive-Job для получения результатов задания. Она использует объект задания, сохраненный в переменной $j, для представления задания. Для передачи объекта задания командлету Receive-Job можно также использовать оператор конвейера.






Пример 8

C:\PS>start-job -scriptblock {get-eventlog system}

C:\PS> invoke-command -computername S1 -scriptblock {get-eventlog system} -AsJob

C:\PS> invoke-command -computername S2 -scriptblock {start-job -scriptblock {get-eventlog system}}

C:\PS> get-job

Id    Name     State      HasMoreData   Location   Command
--    ----     -----      -----------   --------   -------
1     Job1     Running    True          localhost  get-eventlog system
2     Job2     Running    True          S1         get-eventlog system

C:\PS> invoke-command -computername S2 -scriptblock {get-job}

Id    Name     State      HasMoreData   Location   Command
--    ----     -----      -----------   --------   -------
4     Job4     Running    True          localhost  get-eventlog system

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

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

Вторая команда используется параметр AsJob командлета Invoke-Command для запуска задания на компьютере S1. Хотя команды задания выполняются на удаленном компьютере, объект задания создается на локальном компьютере, поэтому для управления заданием используются локальные команды.

Третья команда использует командлет Invoke-Command для выполнения команды Start-Job на компьютере S2. С помощью этого метода объект задания создается на удаленном компьютере, и для управления заданием используются удаленные команды.

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

Пятая команда использует командлет Invoke-Command для выполнения команды Get-Job на компьютере S2.

Пример выходных данных показывает команд Get-Job.

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






Пример 9

C:\PS>start-job -scriptblock {get-process}

Id       Name            State      HasMoreData     Location             Command
--       ----            -----      -----------     --------             -------
1        Job1            Failed     False           localhost            get-process

C:\PS> (get-job).jobstateinfo | format-list -property *

State  : Failed
Reason :


C:\PS> get-job | format-list *

HasMoreData   : False
StatusMessage :
Location      : localhost
Command       : get-process
JobStateInfo  : Failed
Finished      : System.Threading.ManualResetEvent
InstanceId    : fb792295-1318-4f5d-8ac8-8a89c5261507
Id            : 1
Name          : Job1
ChildJobs     : {Job2}
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
StateChanged  :


C:\PS> (get-job -name job2).jobstateinfo.reason
Connecting to remote server using WSManCreateShellEx api failed. The async callback gave the following error message :
Access is denied.

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

Первая команда запускает задание на локальном компьютере с помощью командлета Start-Job. Объект задания, возвращаемый командлетом Start-Job, указывает на ошибку при выполнении задания. Значение свойства State — "Failed".

Вторая команда получает объект задания с помощью командлета Get-Job. Команда использует обращение через точку, чтобы получить значение свойства JobStateInfo объекта. Она использует оператор конвейера (|) для отправки объекта в свойстве JobStateInfo командлету Format-List, который выводит все свойства объекта (*) в виде списка.

Результат команды Format-List указывается, что значение Reason задания пусто.

Третья команда используется для продолжения анализа. Она использует команду Get-Job для получения задания и оператор конвейера (|) для отправки всего объекта задания командлету Format-List, который выводит все свойства задания в виде списка.

Отображение всех свойств объекта задания показывает, что у задания есть дочернее задание с именем "Job2".

Четвертая команда использует командлет Get-Job для объекта задания, представляющего дочернее задание Job2. Это задание, в рамках которого выполнялась команда. Команда использует обращение через точку, чтобы получить значение свойства Reason свойства JobStateInfo.

Результаты команды показывают, что ошибка задания вызвана ошибкой "Отказано в доступе". В данном случае пользователь забыл воспользоваться командой "Запуск от имени администратора" при запуске Windows PowerShell. 

Поскольку фоновые задания используют функции удаленного взаимодействия Windows PowerShell, компьютер должен быть настроен для удаленного взаимодействия даже при работе с заданиями, которые выполняются только на локальном компьютере.

Дополнительные сведения о требованиях для удаленного взаимодействия Windows PowerShell см. в разделе about_Remote_Requirements. Советы по диагностике см. в разделе about_Remote_Troubleshooting.






См. также




Содержание