항목
  about_Job_Details

간단한 설명
  로컬 및 원격 컴퓨터의 백그라운드 작업에 대한 자세한 정보를 제공합니다.
    
자세한 설명
   이 항목에서는 백그라운드 작업에 대한 개념을 설명하고 Windows PowerShell에서 백그라운드 작업이 어떻게 
   수행되는지에 대한 기술 정보를 제공합니다.

   이 항목은 about_Jobs 및 about_Remote_Jobs 항목을 보충한 것입니다.

   중요: Start-Job을 사용하거나 Invoke-Command의 AsJob 매개 변수를 사용하여 시작된 백그라운드 
         작업은 Windows PowerShell 원격 인프라를 통해 수행됩니다. 이러한 기능을 사용하려면 백그라운드 작업이 
         로컬 컴퓨터에서만 실행되는 경우에도 Windows PowerShell을 원격용으로 구성해야 합니다. 자세한 내용은 
         about_Remote_Requirements를 참조하십시오.


 백그라운드 작업 정보
    백그라운드 작업은 명령이나 식을 비동기적으로 실행하며 cmdlet, 함수, 스크립트 또는 다른 명령 기반 작업을 
    실행할 수 있습니다. 백그라운드 작업은 시간이 오래 걸리는 명령을 실행하기 위한 용도로 설계되었지만 
    백그라운드에서 명령을 실행할 때에도 사용할 수 있습니다.

    동기 명령이 실행되면 명령이 완료될 때까지 Windows PowerShell 명령 프롬프트가 나타나지 않습니다. 그러나 
    백그라운드 작업은 Windows PowerShell 프롬프트를 표시합니다. 백그라운드 작업을 시작하는 
    명령은 작업 개체를 반환합니다. 백그라운드 작업이 실행되는 동안 다른 작업을 할 수 있도록 프롬프트가 
    즉시 반환됩니다.
  
    백그라운드 작업을 시작할 경우 작업이 빨리 실행되더라도 결과가 즉시 나타나지는 않습니다. 반환되는 작업 
    개체에는 작업에 대한 유용한 정보가 포함되지만 작업 결과는 포함되지 않습니다. 나머지 결과를 얻으려면 
    별도의 명령을 실행해야 합니다. 작업을 중지하고, 작업이 완료될 때까지 기다리며, 작업을 삭제하는 
    명령을 실행할 수도 있습니다.

    백그라운드 작업의 시간 조절을 다른 명령과 독립적으로 할 수 있도록 각 백그라운드 작업은 고유한 
    Windows PowerShell 환경("세션")에서 실행됩니다. 이 환경은 작업 실행을 위해서만 만들어진 후 삭제되는 
    임시 연결이거나, 여러 관련 작업이나 명령을 실행할 때 사용할 수 있는 영구 세션(PSSession)일 수 있습니다.


 작업 Cmdlet 사용
    로컬 컴퓨터에서 백그라운드 작업을 시작하려면 Start-Job 명령을 사용합니다. Start-Job은 작업 개체를 
    반환합니다. Get-Job cmdlet을 사용하여 로컬 컴퓨터에서 시작한 작업을 나타내는 개체를 가져올 수도 
    있습니다.

    작업 결과를 가져오려면 Receive-Job 명령을 사용합니다. 작업이 완료되지 않으면 Receive-Job은 
    부분적인 결과를 반환합니다. 또한 Wait-Job cmdlet을 사용하여 세션에서 시작된 한 작업이나 모든 작업이 
    완료될 때까지 명령 프롬프트가 표시되지 않도록 할 수도 있습니다.

    백그라운드 작업을 중지하려면 Stop-Job cmdlet을 사용합니다. 작업을 삭제하려면 Remove-Job cmdlet을 
    사용합니다.

    Cmdlet이 작동하는 방식에 대한 자세한 내용은 각 cmdlet에 대한 도움말 항목 및 about_Jobs를 
    참조하십시오.

 
 원격 컴퓨터에서 백그라운드 작업 시작
    로컬 또는 원격 컴퓨터에서 백그라운드 작업을 만들고 관리할 수 있습니다. 백그라운드 작업을 원격으로 
    실행하려면 Invoke-Command와 같은 cmdlet의 AsJob 매개 변수를 사용하거나 Invoke-Command cmdlet을 
    사용하여 Start-Job 명령을 원격으로 실행합니다. 대화형 세션에서 백그라운드 작업을 시작할 수도 
    있습니다.

    원격 백그라운드 작업에 대한 자세한 내용은 about_Remote_Jobs를 참조하십시오.


 하위 작업
    각 백그라운드 작업은 하나의 상위 작업과 하나 이상의 하위 작업으로 구성됩니다. Start-Job을 
    사용하거나 Invoke-Command의 AsJob 매개 변수를 사용하여 시작된 작업에서 상위 작업은 Executive이며 
    명령을 실행하거나 결과를 반환하지 않습니다. 명령은 실제로 하위 작업을 통해 실행됩니다. 다른 
    cmdlet을 사용하여 시작된 작업은 다르게 동작할 수 있습니다.

    하위 작업은 상위 작업 개체의 ChildJobs 속성에 저장됩니다. ChildJobs 속성은 하나 이상의 하위 작업 개체를 
    포함할 수 있습니다. 하위 작업 개체에는 상위 작업과 다른 이름, ID 및 인스턴스 ID가 있으므로 상위 및 하위 
    작업을 개별적으로 관리하거나 한 단위로 관리할 수 있습니다.

    한 작업의 상위 및 하위 작업을 보려면 Get-Job cmdlet을 사용하여 상위 작업을 가져온 다음 아래 
    명령에서처럼 개체의 Name 및 ChildJobs 속성을 표시하는 Format-List 명령에 이 작업을 파이프합니다.

        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을 사용하여 로컬 컴퓨터에서 작업을 시작하는 경우 작업은 Executive 상위 작업과 명령을 
          실행하는 하위 작업으로 구성됩니다.

       -- Invoke-Command의 AsJob 매개 변수를 사용하여 하나 이상의 컴퓨터에서 작업을 시작하는 경우 작업은 
          각 컴퓨터에서 실행되는 각 작업에 대한 하나의 Executive 상위 작업과 하나의 하위 작업으로 구성됩니다.

       -- Invoke-Command를 사용하여 하나 이상의 원격 컴퓨터에서 Start-Job 명령을 실행하는 경우 결과는 
          각 원격 컴퓨터에서 로컬 명령을 실행할 때와 같습니다. 명령은 각 컴퓨터에 대한 작업 개체를 반환합니다. 
          작업 개체는 하나의 Executive 상위 작업과 명령을 실행하는 하나의 하위 작업으로 구성됩니다.
    
    상위 작업은 모든 하위 작업을 나타냅니다. 상위 작업을 관리하면 연관된 하위 작업도 관리됩니다. 예를 들어 
    상위 작업을 중지하면 모든 하위 작업도 중지되고, 상위 작업의 결과를 가져오면 모든 하위 작업의 결과도 
    가져옵니다.

    그러나 하위 작업을 개별적으로 관리할 수도 있습니다. 이 방법은 작업과 관련된 문제를 조사하려는 경우 또는 
    Invoke-Command의 AsJob 매개 변수를 사용하여 시작된 많은 하위 작업 중 한 하위 작업의 결과만 
    가져오려는 경우에 유용합니다. 억음 기호(`)는 줄 계속 문자입니다.

    다음 명령은 Invoke-Command의 AsJob 매개 변수를 사용하여 로컬 컴퓨터와 두 대의 원격 컴퓨터에서 
    백그라운드 작업을 시작합니다. 이 명령은 해당 작업을 $j 변수에 저장합니다.

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

    $j에 저장된 작업의 Name 및 ChildJob 속성을 표시할 경우 명령이 컴퓨터의 작업마다 하나씩 세 개의 하위 
    작업을 포함하는 작업 개체를 반환했음을 보여 줍니다.

        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 cmdlet을 사용하여 상위 작업의 결과를 가져옵니다. 
    그러나 다음 명령과 같이 특정 하위 작업의 결과를 가져올 수도 있습니다.

        C:\PS> receive-job -job6 -keep | format-table ComputerName, 
        DateTime -auto

        ComputerName DateTime
        ------------ --------
        Server02   Thursday, March 13, 2008 4:16:03 PM

    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




목차