about_PSSessions

업데이트 날짜: 2012년 8월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0

항목

about_PSSessions

간단한 설명

Windows PowerShell 세션(PSSessions)을 설명하고 원격 컴퓨터에 영구적으로 연결하는 방법을 설명합니다.

자세한 설명

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

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

또한 로컬 컴퓨터에 PSSession을 만들어 여기에서 명령을 실행할 수 있습니다. 로컬 PSSession은 Windows PowerShell 원격 인프라를 사용하여 PSSession을 만들어 관리합니다.

Windows PowerShell 3.0부터 PSSession은 해당 PSSession이 만들어진 세션과 독립적입니다. 활성 PSSession은 원격 컴퓨터(또는 원격 끝에 있는 컴퓨터 또는 연결의 "서버 쪽")에서 유지 관리됩니다. 따라서 PSSession에서 연결 해제하고 나중에 동일한 컴퓨터나 다른 컴퓨터에서 다시 연결할 수 있습니다.

이 항목에서는 PSSessions을 만들고, 사용하고, 가져오고, 삭제하는 방법을 설명합니다. 자세한 내용은 about_PSSession_Details를 참조하세요.

참고

PSSessions는 Windows PowerShell 원격 인프라를 사용합니다. PSSessions를 사용하려면 로컬 및 원격 컴퓨터가 원격 기능에 맞게 구성되어야 합니다. 자세한 내용은 about_Remote_Requirements를 참조하세요.

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

세션이란?

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

Windows PowerShell을(를) 시작할 때마다 세션이 만들어지고, 세션에서 명을 실행할 수 있습니다. 항목을 모듈 및 스냅인 등의 세션에 추가하고, 변수, 함수, 별칭 등의 항목을 추가할 수 있습니다. 이들 항목은 세션에서만 존재하며 세션이 끝나면 삭제됩니다.

또한 로컬 컴퓨터 또는 원격 컴퓨터에서 "Windows PowerShell 세션" 또는 "PSSessions"으로 알려진 사용자 관리 세션을 만들 수 있습니다. 기본 세션처럼 PSSession에서 명령을 실행하고 항목을 추가하고 만들 수 있습니다.

그러나 자동으로 시작되는 세션과는 달리, 직접 만든 PSSessions을 제어할 수 있습니다. 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-Command 또는 Enter-PSSession의 ComputerName 매개 변수를 사용하는 경우 Windows PowerShell은 원격 컴퓨터에 임시로 연결하고 명령이 완료되는 즉시 연결을 닫습니다. 만든 모든 데이터 요소는 연결이 닫힐 때 없어집니다.

Get-Eventlog 및 Get-WmiObject 등의 ComputerName 매개 변수를 가진 기타 cmdlet은 데이터를 수집하기 위해 다른 원격 기술을 사용합니다. 어떤 누구도 PSSession와 같은 영구적 연결을 만들지 않습니다.

PSSESSION을 만드는 방법

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

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

        New-PSSession -ComputerName Server01

명령을 제출할 때 New-PSSession은 PSSession을 만들고 PSSession을 나타내는 개체를 반환합니다. PSSession을 만들 때 개체를 변수에 저장하거나 Get-Job 명령을 사용하여 나중에 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을 가져오려면 ComputerName 매개 변수 없이 Get-PSSession cmdlet을 사용합니다. Get-PSSession은 New-PSSession을 반환하는 것과 동일한 개체 유형을 반환합니다. 여기에 섹션 본문을 삽입합니다.

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

        Get-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

Windows PowerShell 3.0부터 PSSession은 원격 컴퓨터에서 관리됩니다. 특정 원격 컴퓨터에서 만든 PSSession을 가져오려면 Get-PSSession cmdlet의 ComputerName 매개 변수를 사용합니다. 다음 명령은 Server01 원격 컴퓨터에서 만든 PSSession을 가져옵니다. 이는 로컬 컴퓨터 또는 다른 컴퓨터의 현재 세션과 다른 세션에서 만든 PSSession을 포함합니다.

        Get-PSSession -ComputerName Server01

Windows PowerShell 2.0에서 Get-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을 삭제하고 사용 중인 리소스를 해제합니다.

        Remove-PSSession -Session $ps

또는

        Remove-PSSession -Id 1

원격 컴퓨터에서 PSSession을 제거하려면 Remove-PSSession cmdlet의 ComputerName 매개 변수를 사용합니다.

       Remove-PSSession -ComputerName Server01 -Id 1

PSSession을 삭제하지 않으면 PSSession은 시간이 초과될 때까지 사용할 수 있습니다.

또한 New-PSSessionOption cmdlet의 IdleTimeout 매개 변수를 사용하여 유휴 PSSession의 만료 시간을 설정할 수 있습니다. 자세한 내용은 New-PSSessionOption을 참조하세요.

PSSESSION CMDLET

    Cmdlet                Description
    -----------------     ------------------------------------------------------
    New-PSSession         Creates a new PSSession on a local or remote computer.

    Get-PSSession         Gets the PSSessions in the current session.

    Remove-PSSession      Deletes the PSSessions in the current session.

    Enter-PSSession       Starts an interactive session.

    Exit-PSSession        Ends an interactive session.
    
    Disconnect-PSSession  Disconnects a PSSession from the current session.

    Connect-PSSession     Connects a PSSession to the current session.
     
    Receive-PSSession     Gets the results of commands that ran in a disconnected
                          session.

PSSession cmdlet의 목록을 보려면 다음을 입력합니다.

       get-help *-PSSession

자세한 내용

PSSession에 대한 자세한 내용은about_PSSession_Details를 참조하세요.

참고 항목

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Connect-PSSession

Disconnect-PSSession

Enter-PSSession

Exit-PSSession

Get-PSSession

Invoke-Command

New-PSSession

Remove-PSSession