다음을 통해 공유


about_PSSessions

항목
    about_PSSessions

간단한 설명
    Windows PowerShell 세션(PSSession)에 대해 설명하고 원격 컴퓨터에 영구 연결을 설정하는 방법을 
    살펴봅니다. 


자세한 설명
    원격 컴퓨터에서 Windows PowerShell 명령을 실행하려면 cmdlet의 ComputerName 매개 변수를 
    사용하거나, Windows PowerShell 세션(PSSession)을 만들고 PSSession에서 명령을 실행할 
    수 있습니다. 

    PSSession을 만드는 경우 Windows PowerShell은 원격 컴퓨터에 영구 연결을 설정합니다. 
    PSSession을 사용하여 원격 컴퓨터에서 일련의 관련 명령을 실행할 수 있습니다. 동일한 
    PSSession에서 실행되는 명령은 변수 값, 별칭 및 함수와 같은 데이터를 공유할 수 있습니다.

    로컬 컴퓨터에서 PSSession을 만들고 해당 PSSession에서 명령을 실행할 수도 있습니다. 로컬 
    PSSession은 Windows PowerShell 원격 인프라를 사용하여 PSSession을 만들고 유지 관리합니다.

    이 항목에서는 PSSession을 만들고, 사용하고, 가져오고, 삭제하는 방법에 대해 설명합니다. 고급 정보를 
    보려면 about_PSSession_Details를 참조하십시오.

    참고: PSSession은 Windows PowerShell 원격 인프라를 사용합니다. PSSession을 사용하려면 원격 기능을 
          사용하도록 로컬 컴퓨터와 원격 컴퓨터를 구성해야 합니다. 자세한 내용은 about_Remote_Requirements를 
          참조하십시오. 

          Windows Vista 이상 버전에서 로컬 컴퓨터에 PSSession을 만들려면 "관리자 권한으로 실행" 
          옵션을 사용하여 Windows PowerShell을 시작해야 합니다. 


 세션 정의

    세션은 Windows PowerShell이 실행되는 환경입니다. 

    사용자가 Windows PowerShell을 시작할 때마다 세션이 자동으로 만들어지며, 사용자는 세션에서 명령을 
    실행할 수 있습니다. 또한 모듈, 스냅인 등의 항목을 세션에 추가하고 변수, 함수 및 별칭과 같은 항목을 
    만들 수 있습니다. 이러한 항목은 세션에만 존재하며 세션이 종료될 때 삭제됩니다.

    로컬 컴퓨터나 원격 컴퓨터에서 "Windows PowerShell 세션" 또는 "PSSession"이라는 추가 세션을 
    만들 수도 있습니다. 기본 세션과 마찬가지로 PSSession에서 명령을 실행할 수 있으며 항목을 추가하고 
    만들 수 있습니다.  

    그러나 자동으로 시작되는 세션과 달리 사용자가 만드는 PSSession을 제어할 수 있습니다. PSSession을 
    가져오고, 만들고, 구성하고, 제거할 수 있으며 동일한 PSSession에서 여러 명령을 실행할 수 있습니다. 
    PSSession은 사용자가 사용자 세션에서 삭제할 때까지 열려 있으며 계속 사용할 수 있습니다.
      
    일반적으로 원격 컴퓨터에서 일련의 관련 명령을 실행하기 위해 PSSession을 만듭니다. 원격 컴퓨터에서 
    PSSession을 만들 때 Windows PowerShell에서는 원격 컴퓨터에 대한 영구 연결을 설정하여 세션을 
    지원합니다. 

    Invoke-Command 또는 Enter-PSSession cmdlet의 ComputerName 매개 변수를 사용하여 원격 
    명령을 실행하거나 대화형 세션을 시작하는 경우 Windows PowerShell은 원격 컴퓨터에서 임시 
    세션을 만들고 명령이 완료되거나 대화형 세션이 종료되면 곧바로 해당 세션을 닫습니다. 이러한 임시 
    세션을 제어할 수 없으며 둘 이상의 명령이나 대화형 세션에 임시 세션을 사용할 수 없습니다.

    Windows PowerShell에서 "현재 세션"은 사용자가 작업하고 있는 세션입니다. "현재 세션"은 임시 
    세션이나 PSSession을 비롯한 모든 세션을 나타낼 수 있습니다.


 PSSession을 사용하는 이유

    원격 컴퓨터에 대한 영구 연결이 필요할 때 PSSession을 사용합니다. PSSession을 사용하여 변수 값, 
    함수의 내용, 별칭의 정의와 같은 데이터를 공유하는 일련의 명령을 실행할 수 있습니다.

    PSSession을 만들지 않고 원격 명령을 실행할 수 있습니다. 원격 지원 cmdlet의 ComputerName 매개 
    변수를 사용하여 하나 이상의 컴퓨터에서 한 명령이나 관련되지 않은 일련의 명령을 실행할 수 있습니다.

    Invoke-Expression 또는 Enter-PSSession의 ComputerName 매개 변수를 사용하는 경우 Windows PowerShell은 
    원격 컴퓨터에 임시 연결을 설정하고 명령이 완료되면 곧바로 연결을 닫습니다. 연결이 닫히면 사용자가 
    만드는 데이터 요소가 모두 손실됩니다. 

    ComputerName 매개 변수가 있는 Get-Eventlog, Get-WmiObject 등의 cmdlet은 다른 
    원격 기술을 사용하여 데이터를 수집하며, PSSession과 같은 영구 연결을 만들지 않습니다.
     

 PSSession을 만드는 방법

    PSSession을 만들려면 New-PSSession cmdlet을 사용합니다. 원격 컴퓨터에서 PSSession을 
    만들려면 New-PSSession cmdlet의 ComputerName 매개 변수를 사용합니다.

    예를 들어 다음 명령은 Server01 컴퓨터에서 새로운 PSSession을 만듭니다.

        new-pssession -computername Server01

    명령을 전송할 때 New-PSSession은 PSSession을 만들고 PSSession을 나타내는 개체를 반환합니다. 
    PSSession을 만들 때 개체를 변수에 저장하거나 이후에 Get-PSSession 명령을 사용하여 
    PSSession을 가져올 수 있습니다.

    예를 들어 다음 명령은 Server01 컴퓨터에서 새로운 PSSession을 만들고 생성되는 개체를 $ps 변수에 
    저장합니다.
    
        $ps = new-pssession -computername Server01


 많은 컴퓨터에서 PSSession을 만드는 방법

    여러 컴퓨터에서 PSSession을 만들려면 New-PSSession cmdlet의 ComputerName 매개 변수를 
    사용합니다. 쉼표로 구분된 목록으로 원격 컴퓨터의 이름을 입력합니다. 

    예를 들어 Server01, Server02 및 Server03 컴퓨터에서 PSSession을 만들려면 다음과 같이 
    입력합니다.

        new-PSSession -computername Server01, Server02, Server03

    New-PSSession은 각 원격 컴퓨터에서 PSSession을 하나 만듭니다. 


 PSSession을 가져오는 방법 

    현재 세션에서 만들어진 PSSession을 가져오려면 Get-PSSession cmdlet을 사용합니다. 
    Get-PSSession은 New-PSSession이 반환하는 동일한 형식의 개체를 반환합니다. 

    다음 명령은 현재 세션에서 만들어진 PSSession을 모두 가져옵니다.

        get-PSSession

    PSSession의 기본 표시에는 PSSession의 ID와 기본 표시 이름이 나타납니다. 세션을 만들 때 
    대체 표시 이름을 할당할 수 있습니다.

        Id   Name       ComputerName    State    ConfigurationName
        ---  ----       ------------    -----    ---------------------
        1    Session1   Server01        Opened   Microsoft.PowerShell
        2    Session2   Server02        Opened   Microsoft.PowerShell
        3    Session3   Server03        Opened   Microsoft.PowerShell

   
    PSSession도 변수에 저장할 수 있습니다. 다음 명령은 PSSession을 가져와서 $ps123 변수에 저장합니다.

        $ps123 = get-PSSession  

    PSSession cmdlet을 사용할 때 ID 또는 이름이나 인스턴스 ID(GUID)로 PSSession을 참조할 
    수 있습니다. 다음 명령은 ID로 PSSession을 가져와서 $ps01 변수에 저장합니다.

        $ps01 = get-PSSession -id 1

    Get-PSSession은 현재 세션에서 만들어진 PSSession만 가져옵니다. 이 명령은 다른 세션이나 다른 
    컴퓨터에서 만들어진 PSSession을 가져오지 않습니다. 이는 세션이 로컬 컴퓨터에 연결되어 있거나 
    로컬 컴퓨터에서 명령을 실행하고 있는 경우에도 마찬가지입니다. 



 PSSession에서 명령을 실행하는 방법

    하나 이상의 PSSession에서 명령을 실행하려면 Invoke-Command cmdlet을 사용합니다. Session 매개 
    변수를 사용하여 PSSession을 지정하고 ScriptBlock 매개 변수를 사용하여 명령을 지정합니다.

    예를 들어 $ps123 변수에 저장된 세 PSSession 각각에서 Get-ChildItem("dir") 명령을 실행하려면 
    다음과 같이 입력합니다.

        invoke-command -session $ps123 -scriptblock {get-childitem}

 
 PSSession을 삭제하는 방법

    PSSession을 완료하면 Remove-PSSession cmdlet을 사용하여 PSSession을 삭제하고 해당 
    PSSession이 사용하고 있는 리소스를 해제합니다.

        remove-PSSession -session $ps

        - 또는 - 
          
        remove-PSSession -id 1
 
    PSSession을 삭제하지 않는 경우 현재 세션을 닫거나 Windows PowerShell을 종료할 때까지 PSSession이 
    열려 있으며 계속 사용할 수 있습니다.

    New-PSSession의 TimeOut 매개 변수를 사용하여 유휴 PSSession의 만료 시간을 설정할 수도 있습니다. 
    자세한 내용을 보려면 new-PSSession을 참조하십시오.


 PSSession cmdlet

    Cmdlet                설명
    ----------------      -------------------------------------------------------
    New-PSSession         로컬 또는 원격 컴퓨터에서 새로운 PSSession을 만듭니다.

    Get-PSSession         현재 세션에 있는 PSSession을 가져옵니다.

    Remove-PSSession      현재 세션에 있는 PSSession을 삭제합니다.

    Enter-PSSession       대화형 세션을 시작합니다.

    Exit-PSSession        대화형 세션을 종료합니다.



    PSSession cmdlet의 목록을 보려면 다음과 같이 입력하십시오.
    
    get-help *-PSSession


 자세한 내용

    PSSession에 대한 자세한 내용은 about_PSSession_Details를 참조하십시오.
    

참고 항목
    about_Remote
    about_Remote_Requirements
    New-PSSession
    Get-PSSession
    Remove-PSSession
    Enter-PSSession
    Exit-PSSession
    Invoke-Command