about_Remote_Disconnected_Sessions

업데이트 날짜: 2012년 8월

적용 대상: Windows PowerShell 3.0

항목

about_Remote_Disconnected_Session

간단한 설명

PSSession에서 연결을 끊는 방법 및 다시 연결하는 방법에 대해 설명합니다.

자세한 설명

Windows PowerShell® 3.0부터는 PSSession에서 연결 해제하고 나중에 동일한 컴퓨터나 다른 컴퓨터에서 PSSession에 다시 연결할 수 있습니다. 세션 상태는 유지되고 PSSession의 명령은 세션의 연결이 끊긴 동안에도 계속 실행됩니다.

연결의 원격 끝에 있는 컴퓨터가 Windows PowerShell 3.0 이상의 버전을 실행하는 경우에만 연결이 끊긴 세션 기능을 사용할 수 있습니다.

연결이 끊긴 세션 기능을 사용하면 PSSession에서 명령 실행을 중단하지 않고 PSSession가 만들어진 세션을 닫을 수 있고, Windows PowerShell도 닫을 수 있고, 컴퓨터를 종료할 수 있습니다. 완료하는 데 오래 걸리는 명령을 실행하는 데 특히 유용하며, IT 전문가들이 요구하는 시간 및 장치 유연성을 제공합니다.

참고: Enter-PSSession cmdlet을 사용하여 시작된 대화형 세션으로부터 연결을 해제할 수 없습니다.

연결이 끊어진 세션을 사용하여 컴퓨터 또는 네트워크 중단으로 의도하지 않게 연결이 끊긴 PSSession을 관리할 수 있습니다.

실제 사용에서 연결이 끊긴 세션 기능을 통해 문제 해결을 시작하고, 보다 높은 우선 순위 문제에 집중하여, 다른 위치에 있는 다른 컴퓨터의 솔루션에서 작업을 재개할 수 있습니다.

DISCONNECTED SESSION CMDLET

다음 cmdlet은 연결이 끊긴 세션 기능을 지원합니다.

  • Disconnect-PSSession:

    PSSession의 연결을 끊습니다.

  • Connect-PSSession:

    연결이 끊긴 PSSession에 연결합니다.

  • Receive-PSSession:

    연결이 끊긴 세션에서 실행된 명령의 결과를 가져옵니다.

  • Get-PSSession:

    로컬 및 원격 컴퓨터의 PSSession을 가져옵니다.

  • Invoke-Command:

    InDisconnectedSession 매개 변수는 PSSession을 만들고 즉시 연결을 끊습니다.

연결이 끊긴 세션 기능의 작동 방식

Windows PowerShell 3.0부터 PSSession은 해당 PSSession이 만들어진 세션과 독립적입니다. 활성 PSSession은 PSSession이 만들어진 세션이 닫히고 원래 컴퓨터가 종료되거나 네트워크로부터 끊긴 경우에도 원격 컴퓨터 또는 연결의 "서버 쪽"에서 유지 관리됩니다.

Windows PowerShell 2.0에서는 원래 세션 또는 만들어진 세션 쪽에서 연결이 끊긴 경우 PSSession이 원격 컴퓨터에서 삭제됩니다.

PSSession의 연결이 끊긴 경우, PSSession은 활성 상태로 유지되고 원격 컴퓨터에서 유지 관리됩니다. 세션 상태는 실행에서 연결 끊김으로 변경됩니다. 현재 세션, 동일한 컴퓨터의 다른 세션 또는 다른 컴퓨터로부터 연결이 끊긴 PSSession에 다시 연결할 수 있습니다. 세션을 유지 관리하는 원격 컴퓨터는 실행되어 네트워크에 연결되어야 합니다.

연결이 끊긴 PSSession의 명령은 명령이 완료되거나 출력 버퍼가 가득 찰 때까지 원격 컴퓨터에서 중단되지 않고 계속 실행됩니다. 가득 찬 출력 버퍼가 명령을 중단시키지 않도록 하려면 Disconnect-PSSession, New-PSSessionOption 또는 New-PSTransportOption cmdlet의 OutputBufferingMode 매개 변수를 사용합니다.

연결이 끊긴 세션은 원격 컴퓨터의 연결이 끊긴 상태에서 유지 관리됩니다. Remove-PSSession cmdlet 등을 사용하여 PSSession을 삭제하거나 PSSession의 유효 시간 제한이 만료되기 전까지는 다시 연결할 수 있습니다. Disconnect-PSSession, New-PSSessionOption 또는 New-PSTransportOption cmdlet의 IdleTimeoutSec 또는 IdleTimeout 매개 변수를 사용하여 PSSession의 유휴 시간 제한을 조정할 수 있습니다.

직접 만든 PSSession에 다른 사용자가 연결할 수 있지만, 이는 세션을 만들 때 자격 증명을 제공하거나 세션 구성의 RunAs 자격 증명을 사용할 수 있는 경우에만 가능합니다.

PSSESSION을 가져오는 방법

Windows PowerShell 3.0부터는 Get-PSSession cmdlet이 로컬 컴퓨터 및 원격 컴퓨터에서 PSSession을 가져올 수 있습니다. 또한 현재 세션에서 만들어진 PSSession을 가져올 수 있습니다.

로컬 컴퓨터 또는 원격 컴퓨터에서 PSsession을 가져오려면 ComputerName 또는 ConnectionUri 매개 변수를 사용합니다. 매개 변수가 없는 경우 Get-PSSession은 종료된 위치에 관계 없이 로컬 세션에서 만들어진 PSSession을 가져옵니다.

PSSession을 가져올 때, 유지 관리되는 컴퓨터 즉, 원격 또는 "서버 쪽" 컴퓨터에서 PSSession를 검색해야 합니다.

예를 들어 Server01 컴퓨터에 PSSession을 만든 경우, Server01 컴퓨터로부터 세션을 가져옵니다. 또 다른 컴퓨터의 PSSession을 로컬 컴퓨터에 만든 경우, 로컬 컴퓨터로부터 세션을 가져옵니다.

다음 명령 시퀀스는 Get-PSSession의 작동 방식을 보여줍니다.

첫 번째 명령은 Server01 컴퓨터에 PSSession을 만듭니다. 세션은 Server01 컴퓨터에 상주합니다.

      PS C:\ps-test> New-PSSession -ComputerName Server01

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

세션을 가져오려면 Server01 값을 가진 Get-PSSession의 ComputerName 매개 변수를 사용합니다.

      PS C:\ps-test> Get-PSSession -ComputerName Server01

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

Get-PSSession의 ComputerName 매개 변수 값이 localhost인 경우, Get-PSSession은 로컬 컴퓨터에서 종료하고 유지 관리되는 PSSession을 가져옵니다. 이는 PSSession이 로컬 컴퓨터에서 시작되었더라도 Server01 컴퓨터의 PSSession을 가져오지 않습니다.

      PS C:\ps-test> Get-PSSession -ComputerName localhost
      PS C:\ps-test>

현재 세션에서 만들어진 세션을 가져오려면 매개 변수 없이 Get-PSSession cmdlet을 사용합니다. 이 명령은 현재 세션에서 만들어진 PSSession을 가져오며 Server01 컴퓨터에 연결합니다.

PS C:\ps-test> Get-PSSession

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

세션 연결을 끊는 방법

PSSession의 연결을 끊으려면 Disconnect-PSSession cmdlet을 사용합니다. PSSession을 식별하려면, Session 매개 변수를 사용하거나 New-PSSession 또는 Get-PSSession cmdlet의 PSSession을 Disconnect-PSSession로 파이핑합니다.

다음 명령은 Server01 컴퓨터에서 PSSession 연결을 끊습니다. State 속성 값은 Disconnected이고 Availability는 None임을 확인합니다.

     PS C:\> Get-PSSession -ComputerName Server01 | Disconnect-PSSession

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        Server01        Disconnected  Microsoft.PowerShell          None

연결이 끊긴 세션을 만들려면 Invoke-Command cmdlet의 InDisconnectedSession 매개 변수를 사용합니다. 이는 명령이 출력을 반환하기 전에 세션을 만들고, 명령을 시작하고, 즉시 연결을 끊습니다.

다음 명령은 Server02 원격 컴퓨터의 연결이 끊긴 세션에서 Get-WinEvent 명령을 실행합니다.

     PS C:\> Invoke-Command -ComputerName Server02 -InDisconnectedSession `
             -ScriptBlock {Get-WinEvent -LogName "Windows PowerShell"} 

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      4 Session3        Server02        Disconnected  Microsoft.PowerShell          None

연결이 끊긴 세션을 연결하는 방법

PSSession을 만든 세션 또는 로컬 컴퓨터나 다른 컴퓨터의 세션으로부터 연결이 끊긴 PSSession에 연결할 수 있습니다.

PSSession을 만들고, PSSession에서 명령을 실행하며, PSSession로부터 연결을 끊고, Windows PowerShell을 닫은 후, 컴퓨터를 종료할 수 있습니다. 몇 시간 후 다른 컴퓨터를 열어 PSSession를 가져와 연결하고, 연결이 끊긴 동안 PSSession에서 실행한 명령 결과를 가져올 수 있습니다. 그런 다음 세션에서 더 많은 명령을 실행할 수 있습니다.

연결이 끊긴 PSSession을 연결하려면 Connect-PSSession cmdlet을 사용합니다. ComputerName 또는 ConnectionUri 매개 변수를 사용하여 PSSession을 식별하거나, Get-PSSession의 PSSession을 Connect-PSSession로 파이핑합니다.

다음 명령은 Server02 원격 컴퓨터의 서비스를 가져옵니다. 출력에는 두 개의 연결이 끊긴 세션이 있으며, 둘 다 사용 가능합니다.

     PS C:\> Get-PSSession -ComputerName Server02

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        juneb-srv8320   Disconnected  Microsoft.PowerShell          None
      4 Session3        juneb-srv8320   Disconnected  Microsoft.PowerShell          None

다음 명령은 Session2에 연결합니다. 이제 PSSession이 열렸고 사용 가능합니다.

     PS C:> Connect-PSSession -ComputerName Server02 -Name Session2


     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        juneb-srv8320   Opened        Microsoft.PowerShell     Available

결과를 가져오는 방법

연결이 끊긴 PSSession에서 실행된 명령 결과를 가져오려면 Receive-PSSession cmdlet을 사용합니다.

Receive-PSSession 대신에 Connect-PSSession cmdlet을 사용할 수도 있습니다. 세션이 이미 연결된 경우 Receive-PSSession은 세션의 연결이 끊겼을 때 실행된 명령의 결과를 가져옵니다. PSSession의 연결이 여전히 끊긴 경우 Receive-PSSession이 여기에 연결하고 연결이 끊긴 동안 실행된 명령의 결과를 가져옵니다.

Receive-PSSession은 결과를 작업(비동기적으로)에서 반환하거나 호스트 프로그램(동기적으로)에 반환합니다. OutTarget 매개 변수를 사용하여 Job 또는 Host를 선택합니다. Host가 기본값입니다. 그러나 수신되고 있는 명령이 현재 세션에서 작업으로서 시작된 경우 기본적으로 작업으로 반환됩니다.

다음 명령은 Receive-PSSession cmdlet을 사용하여 Server02 컴퓨터의 PSSession에 연결하고 Session3 세션에서 실행된 Get-WinEvent 명령의 결과를 가져옵니다. 명령은 OutTarget 매개 변수를 사용하여 작업의 결과를 가져옵니다.

      PS C:\> Receive-PSSession  -ComputerName Server02 -Name Session3 -OutTarget Job

      Id     Name            PSJobTypeName   State         HasMoreData     Location
      --     ----            -------------   -----         -----------     --------
      3      Job3            RemoteJob       Running       True            Server02

작업 결과를 가져오려면 Receive-Job cmdlet을 사용합니다.

      PS C:\ps-test> Get-Job | Receive-Job -Keep


          ProviderName: PowerShell

     TimeCreated             Id LevelDisplayName Message     PSComputerName                                                       
     -----------             -- ---------------- -------     --------------                                                       
     5/14/2012 7:26:04 PM   400 Information      Engine stat Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "W Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "C Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "V Server02                                                        

STATE 및 AVAILABILITY

연결이 끊긴 PSSession의 State 및 Availability 속성은 다시 연결하기 위해 세션을 사용할 수 있는지 여부를 알려줍니다.

PSSession이 현재 세션에 연결된 경우 상태는 Opened이고 가용성은 Available입니다. PSSession로부터 연결을 끊을 경우 PSSession 상태는 Disconnected이고 가용성은 None입니다.

그러나 State 속성 값은 현재 세션을 기준으로 합니다. 따라서 Disconnected 값은 PSSession이 현재 세션에 연결되어 있지 않음을 의미합니다. 그렇다고 PSSession의 연결이 모든 세션에서 끊어졌다는 것을 의미하지는 않습니다. 다른 세션에 연결되어 있을 수도 있습니다.

PSSession에 연결하거나 다시 연결할 수 있는지 확인하려면 Availability 속성을 사용합니다. Availability 값이 None이면 세션에 연결할 수 있음을 나타냅니다. 값이 Busy이면 PSSession이 다른 세션에 연결되어 있어서 연결할 수 없음을 나타냅니다.

다음 예제는 동일한 컴퓨터에서 두 개의 세션(Windows PowerShell 콘솔 창)에서 실행됩니다. PSSession의 연결이 끊기고 다시 연결될 때 각 세션의 State 및 Availability 속성의 변경되는 값을 확인합니다.

         #Session 1:
         PS C:\> New-PSSession -ComputerName Server30 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         1  Test       Server30        Opened        Microsoft.PowerShell     Available

         #Session 2: 
         PS C:\> Get-PSSession -ComputerName Server30 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         1 Test        Server30        Disconnected  Microsoft.PowerShell          Busy



         #Session 1
         PS C:\> Get-PSSession -ComputerName Server30 -Name Test | Disconnect-PSSession

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          None

         #Session 2
         PS C:\> Get-PSSession -ComputerName Server30 

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          None



         #Session 2
         PS C:\> Connect-PSSession -ComputerName Server01 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         3 Test        Server30        Opened        Microsoft.PowerShell     Available

         #Session 1
         PS C:\> Get-PSSession -ComputerName Server30 

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          Busy

유휴 시간 제한

연결이 끊긴 세션은 Remove-PSSession cmdlet 등을 사용하여 삭제하거나 제한 시간이 만료될 때까지 원격 컴퓨터에서 유지 관리됩니다. PSSession의 IdleTimeout 속성은 연결이 끊긴 세션이 삭제되기 전까지 유지 관리하는 기간을 결정합니다.

"heartbeat thread"가 아무런 응답을 수신하지 않으면 PSSession은 유휴 상태입니다. 연결이 끊긴 세션에서 명령이 여전히 실행되고 있더라도 세션 연결을 끊으면 유휴 상태가 되고 Timeout 클록이 시작됩니다. Windows PowerShell은(는) 연결이 끊긴 세션이 활성 상태이지만 유휴 상태로 간주합니다.

세션을 만들고 연결을 끊을 때, PSSession의 유휴 시간 제한이 필요한 만큼 세션을 유지 관리하는 데 충분히 길지만 원격 컴퓨터에 불필요한 리소스를 소모할 만큼 길진 않은지 확인합니다.

세션 구성의 IdleTimeoutMs 속성은 세션 구성을 사용하는 세션의 기본 유휴 시간 제한을 결정합니다. 기본값을 재정의할 수 있지만, 세션 구성의 MaxIdleTimeoutMs 속성을 초과할 수 없습니다.

세션 구성의 IdleTimeoutMs 및 MaxIdleTimeoutMs 값을 찾으려면 다음 명령 형식을 사용합니다.

      Get-PSSessionConfiguration | Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs

세션 구성의 기본값을 재정의하고 PSSession를 만들 때 그리고 연결을 끊을 때 PSSession의 유휴 시간 제한을 설정할 수 있습니다.

원격 컴퓨터의 Administrators 그룹의 구성원은 세션 구성의 IdleTimeoutMs 및 MaxIdleTimeoutMs 속성을 만들고 변경할 수도 있습니다.

참고:

세션 구성 및 세션 옵션의 유휴 시간 제한 값의 단위는 밀리초입니다. 세션 및 세션 구성 옵션의 유휴 시간 제한 값의 단위는 초입니다.

PSSession을 만들 때(New-PSSession, Invoke-Command) 그리고 연결을 끊을 때(Disconnect-PSSession) PSSession의 유휴 시간 제한을 설정할 수 있습니다. 그러나 PSSession에 연결하거나(Connect-PSSession) 결과를 가져오는 경우(Receive-PSSession) IdleTimeout 값을 변경할 수 없습니다.

Connect-PSSession 및 Receive-PSSession cmdlet이 New-PSSessionOption cmdlet 등에 의해 반환되는 SessionOption 개체를 취하는 SessionOption 매개 변수를 가집니다. 그러나 SessionOption 개체의 IdleTimeout 값과 $PSSessionOption 기본 설정 변수의 IdleTimeout 값은 Connect-PSSession 또는 Receive-PSSession 명령의 PSSession의 IdleTimeout 값을 변경하지 않습니다.

-- 특정 유휴 시간 제한 값으로 PSSession을 만들려면 $PSSessionOption 기본 설정 변수를 만듭니다. IdleTimeout 속성 값을 원하는 값(밀리초 단위)으로 설정합니다.

PSSession을 만들 때 $PSSessionOption 변수 값은 세션 구성의 값보다 우선합니다.

예를 들어 이 명령은 유휴 시간 제한을 48시간으로 설정합니다. 여기에 섹션 본문을 삽입합니다.

PS C:\> $PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

-- 특정 유휴 시간 제한 값으로 PSSession을 만들려면 New-PSSessionOption cmdlet의 IdleTimeoutMSec 매개 변수를 사용합니다. 그런 다음, New-PSSession 또는 Invoke-Command cmdlet의 SessionOption 매개 변수 값의 세션 옵션을 사용합니다.

세션을 만들 때 설정된 값은 $PSSessionOption 기본 설정 변수 및 세션 구성에서 설정된 값보다 우선합니다.

예를 들면 다음과 같습니다.

         PS C:\> $o = New-PSSessionOption -IdleTimeoutMSec 172800000 
         PS C:\> New-PSSession -SessionOption $o

-- 연결을 끊을 때 PSSession의 유휴 시간 제한을 변경하려면 Disconnect-PSSession cmdlet의 IdleTimeoutSec 매개 변수를 사용합니다.

예를 들면 다음과 같습니다.

         PS C:\> Disconnect-PSSession -IdleTimeoutSec 172800

-- 특정 유휴 시간 제한 값과 최대 유휴 시간 제한으로 세션 구성을 만들려면 New-PSTransportOption cmdlet의 IdleTimeoutSec 및 MaxIdleTimeoutSec 매개 변수를 사용합니다. 그런 다음, Register-PSSessionConfiguration의 TransportOption 매개 변수 값의 전송 옵션을 사용합니다.

예를 들면 다음과 같습니다.

         PS C:\> $o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200 
         PS C:\> Register-PSSessionConfiguration -Name Test -TransportOption $o

-- 세션 구성의 기본 유휴 시간 제한 값과 최대 유휴 시간 제한을 변경하려면 New-PSTransportOption cmdlet의 IdleTimeoutSec 및 MaxIdleTimeoutSec 매개 변수를 사용합니다. 그런 다음, Set-PSSessionConfiguration의 TransportOption 매개 변수 값의 전송 옵션을 사용합니다.

예를 들면 다음과 같습니다.

         PS C:\> $o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
         PS C:\> Set-PSSessionConfiguration -Name Test -TransportOption $o

출력 버퍼링 모드

PSSession의 출력 버퍼링 모드는 PSSession의 출력 버퍼가 가득 찬 경우 명령 출력을 관리하는 방식을 결정합니다.

연결이 끊긴 세션에서 출력 버퍼링 모드는 세션 연결이 끊긴 동안에도 명령을 계속 실행할지 여부를 효과적으로 결정합니다.

유효한 값:

    -- Block: When the output buffer is full, execution is suspended
              until the buffer is clear.

    -- Drop:  When the output buffer is full, execution continues. 
              As new output is generated, the oldest output is
              discarded.

기본값인 Block은 데이터를 보존하지만 명령을 중단시킬 수 있습니다.

값이 Drop이면 데이터가 손실될 수는 있지만 명령을 완료할 수 있습니다. Drop 값을 사용할 경우 명령 출력을 디스크의 파일로 리디렉션합니다. 이 값은 연결이 끊긴 세션에 적합합니다.

세션 구성의 OutputBufferingMode 속성은 세션 구성을 사용하는 세션의 기본 출력 버퍼링 모드를 결정합니다.

세션 구성의 OutputBufferingMode 값을 찾으려면 다음 명령 형식을 사용합니다.

      (Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode

    -or-

      Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode

세션 구성의 기본값을 재정의하고 PSSession를 만들 때, 연결을 끊을 때 그리고 다시 연결할 때 PSSession의 출력 버퍼링 모드를 설정할 수 있습니다.

원격 컴퓨터의 Administrators 그룹의 구성원은 세션 구성의 출력 버퍼링 모드를 만들고 변경할 수도 있습니다.

-- 출력 버퍼링 모드가 Drop인 PSSession을 만들려면 OutputBufferingMode 속성 값이 Drop인 상태인 $PSSessionOption 기본 설정 변수를 만듭니다.

PSSession을 만들 때 $PSSessionOption 변수 값은 세션 구성의 값보다 우선합니다.

예를 들면 다음과 같습니다.

         PS C:\> $PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

-- 출력 버퍼링 모드가 Drop인 PSSession을 만들려면 New-PSSessionOption cmdlet의 OutputBufferingMode 매개 변수를 사용하여 Drop 값을 가진 세션 옵션을 만듭니다. 그런 다음, New-PSSession 또는 Invoke-Command cmdlet의 SessionOption 매개 변수 값의 세션 옵션을 사용합니다.

세션을 만들 때 설정된 값은 $PSSessionOption 기본 설정 변수 및 세션 구성에서 설정된 값보다 우선합니다.

예를 들면 다음과 같습니다.

         PS C:\> $o = New-PSSessionOption -OutputBufferingMode Drop
         PS C:\> New-PSSession -SessionOption $o

-- 연결을 끊을 때 PSSession의 출력 버퍼링 모드를 변경하려면 Disconnect-PSSession cmdlet의 OutputBufferingMode 매개 변수를 사용합니다.

예를 들면 다음과 같습니다.

         PS C:\> Disconnect-PSSession -OutputBufferingMode Drop

-- 다시 연결할 때 PSSession의 출력 버퍼링 모드를 변경하려면 New-PSSessionOption cmdlet의 OutputBufferingMode 매개 변수를 사용하여 Drop 값을 가진 세션 옵션을 만듭니다. 그런 다음, Connect-PSSession 또는 Receive-PSSession의 SessionOption 매개 변수 값의 세션 옵션을 사용합니다.

예를 들면 다음과 같습니다.

         PS C:\> $o = New-PSSessionOption -OutputBufferingMode Drop
         PS C:\> Connect-PSSession -Cn Server01 -Name Test -SessionOption $o

-- 기본 출력 버퍼링 모드가 Drop인 세션 구성을 만들려면 New-PSTransportOption cmdlet의 OutputBufferingMode 매개 변수를 사용하여 Drop 값을 가진 전송 옵션 개체를 만듭니다. 그런 다음, Register-PSSessionConfiguration의 TransportOption 매개 변수 값의 전송 옵션을 사용합니다.

예를 들면 다음과 같습니다.

PS C:\> $o = New-PSTransportOption -OutputBufferingMode Drop PS C:\> Register-PSSessionConfiguration -Name Test -TransportOption $o

-- 세션 구성의 기본 출력 버퍼링 모드를 변경하려면 New-PSTransportOption cmdlet의 OutputBufferingMode 매개 변수를 사용하여 Drop 값을 가진 전송 옵션을 만듭니다. 그런 다음, Set-PSSessionConfiguration의 SessionOption 매개 변수 값의 Transport 옵션을 사용합니다.

예를 들면 다음과 같습니다.

         PS C:\> $o = New-PSTransportOption -OutputBufferingMode Drop
         PS C:\> Set-PSSessionConfiguration -Name Test -TransportOption $o

루프백 세션 연결 끊기

"루프백 세션" 또는 "로컬 세션"은 동일한 컴퓨터에서 시작되고 종료되는 PSSession입니다. 다른 PSSession처럼 활성 루프백 세션은 연결의 원격 끝(로컬 컴퓨터)에서 유지 관리되어 루프백 세션으로부터 연결을 끊고 다시 연결할 수 있습니다.

기본적으로 루프백 세션은 세션에서 실행된 명령이 다른 컴퓨터에 액세스하는 것을 허용하지 않는 네트워크 보안 토큰으로 만들어집니다. 로컬 컴퓨터 또는 원격 컴퓨터의 세션의 네트워크 보안 토큰을 가진 루프백 세션에 다시 연결할 수 있습니다.

그러나 New-PSSession, Enter-PSSession 또는 Invoke-Command cmdlet의 EnableNetworkAccess 매개 변수를 사용하는 경우 루프백 세션은 대화형 보안 토큰으로 만들어집니다. 대화형 토큰을 사용하면 다른 컴퓨터에서 데이터를 가져오는 명령을 루프백 세션에서 실행할 수 있습니다.

대화형 토큰으로 루프백 세션의 연결을 끊은 후 동일한 컴퓨터에서 동일한 세션 또는 다른 세션의 루프백 세션에 다시 연결할 수 있습니다. 그러나 악의적인 액세스를 방지하기 위해 루프백 세션을 만든 컴퓨터의 대화형 토큰이 있어야만 루프백 세션에 다시 연결할 수 있습니다.

연결이 끊긴 세션에서 작업 대기

작업이 완료될 때까지 Wait-Job cmdlet은 대기한 후, 명령 프롬프트 또는 다음 명령에 반환합니다. 기본적으로 작업이 실행 중인 세션의 연결이 끊긴 경우 Wait-Job이 반환됩니다. 세션이 다시 연결될 때까지 기다리도록 Wait-Job cmdlet을 지시하려면(Opened 상태에서), Force 매개 변수를 사용합니다. 자세한 내용은 Wait-Job을 참조하세요.

강력한 세션 및 의도하지 않은 연결 끊김

가끔 PSSession이 컴퓨터 실패 또는 네트워크 중단으로 인해 의도하지 않게 끊길 수 있습니다. Windows PowerShell은(는) PSSession을 복구하려 하지만, 성공 여부는 원인의 심각도와 지속 기간에 따라 달라집니다.

의도하지 않게 연결이 끊긴 PSSession의 상태는 Broken 또는 Closed일 수 있지만, Disconnected가 될 수도 있습니다. State 값이 Disconnected인 경우, 세션 연결을 의도적으로 끊은 경우와 같은 기법을 사용하여 PSSession을 관리할 수 있습니다. 예를 들어 Connect-PSSession cmdlet을 사용하여 세션에 다시 연결하고 Receive-PSSession cmdlet을 사용하여 세션이 끊긴 동안 실행된 명령의 결과를 가져올 수 있습니다.

PSSession에서 명령이 실행되고 있는 동안 PSSession가 만들어진 세션을 닫은 경우(종료한 경우), Windows PowerShell은(는) 원격 컴퓨터에서 Disconnected 상태의 PSSession을 유지 관리합니다. PSSession이 만들어진 세션을 닫혔지만(종료했지만) PSSession에서 실행된 명령이 없는 경우, Windows PowerShell은(는) PSSession을 유지 관리하지 않습니다.

키워드

about_Disconnected_Sessions

참고 항목

about_Jobs

about_Remote

about_Remote_Variables

about_PSSessions

about_Session_Configurations

Disconnect-PSSession

Connect-PSSession

Get-PSSession

Receive-PSSession

Invoke-Command