about_PSSession_Details

업데이트 날짜: 2012년 8월

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

항목

about_PSSession_Details

간단한 설명

Windows PowerShell 세션과 원격 명령에서 Windows PowerShell 세션의 역할에 대한 자세한 정보를 제공합니다.

자세한 설명

세션은 Windows PowerShell이 실행되는 환경입니다. 세션은 Windows PowerShell을 시작할 때마다 자동으로 만들어집니다. 사용자는 자신의 컴퓨터나 다른 컴퓨터에서 "Windows PowerShell 세션" 또는 "PSSession"이라는 추가 세션을 만들 수 있습니다.

Windows PowerShell에서 자동으로 만드는 세션과 달리 사용자는 직접 만든 PSSession을 제어하고 관리할 수 있습니다.

PSSession은 원격 컴퓨팅에서 중요한 역할을 합니다. 원격 컴퓨터에 연결된 PSSession을 만들 때 Windows PowerShell에서는 원격 컴퓨터에 대한 영구 연결을 설정하여 PSSession을 지원합니다. PSSession을 사용하여 데이터를 공유하는 일련의 명령, 함수 및 스크립트를 실행할 수 있습니다.

이 항목에서는 Windows PowerShell의 세션과 PSSession에 대해 자세히 설명합니다. 세션에서 수행할 수 있는 작업에 대한 기본적인 내용은 about_PSSessions를 참조하세요.

세션 정보

기술적으로 세션은 Windows PowerShell이 실행되는 환경입니다. 각 세션에는 Windows PowerShell이 실행되는 호스트 프로그램과 System.Management.Automation 엔진의 인스턴스가 포함되어 있습니다. 호스트는 익숙한 Windows PowerShell 콘솔이거나 Cmd.exe 등의 명령을 실행하는 다른 프로그램 또는 Windows PowerShell ISE(통합 스크립팅 환경)와 같이 Windows PowerShell을 호스트하도록 작성된 프로그램일 수 있습니다. Windows의 관점에서 세션은 대상 컴퓨터의 Windows 프로세스입니다.

각 세션은 독립적으로 구성되며, 자체적인 속성, 실행 정책 및 프로필을 포함합니다. 세션이 만들어질 때 존재하는 환경은 컴퓨터에서 환경을 변경하는 경우에도 세션의 수명 동안 유지됩니다. 사용자가 스크립트에서 만드는 세션을 비롯한 모든 세션은 전역 범위에서 만들어집니다.

세션에서 한 번에 하나의 명령(또는 명령 파이프라인)만 실행할 수 있습니다. 한 번에 하나씩 동기적으로 실행되는 두 번째 명령은 첫 번째 명령이 완료될 때까지 최대 4분 동안 대기하고, 동시에 동기적으로 실행되는 두 번째 명령은 실패합니다.

PSSESSION 정보

세션은 Windows PowerShell을 시작할 때마다 만들어집니다. Windows PowerShelll은 임시 세션을 만들어 개별 명령을 실행합니다. 그러나 사용자가 제어하고 관리하는 "Windows PowerShell 세션" 또는 "PSSession"도 만들 수 있습니다.

PSSession은 원격 명령에서 중요합니다. Invoke-Command 또는 Enter-PSSession cmdlet의 ComputerName 매개 변수를 사용하는 경우 Windows PowerShell은 임시 세션을 설정하여 명령을 실행한 다음 명령이나 대화형 세션이 완료되는 즉시 해당 세션을 닫습니다.

그러나 New-PSSession cmdlet을 사용하여 PSSession을 만드는 경우 Windows PowerShell은 여러 명령이나 대화형 세션을 실행할 수 있는 영구 세션을 원격 컴퓨터에서 설정합니다. 사용자가 만드는 PSSession은 계속 열려 있으며 해당 PSSession을 삭제하거나 해당 PSSession이 만들어진 세션을 닫을 때까지 사용할 수 있습니다.

원격 컴퓨터에서 PSSession을 만드는 경우 시스템에서는 원격 컴퓨터에서 PowerShell 프로세스를 만들고 로컬 컴퓨터와 원격 컴퓨터의 해당 프로세스를 연결합니다. 로컬 컴퓨터에서 PSSession을 만드는 경우 새 프로세스와 연결이 모두 로컬 컴퓨터에서 만들어집니다.

PSSESSION은 언제 필요하나요?

Invoke-Command 및 Enter-PSSession cmdlet에는 ComputerName 및 Session 매개 변수가 둘 다 있습니다. 두 매개 변수 중 하나를 사용하여 원격 명령을 실행할 수 있습니다.

하나 이상의 컴퓨터에서 단일 명령이나 관련되지 않은 일련의 명령을 실행하려면 ComputerName 매개 변수를 사용합니다.

데이터를 공유하는 명령을 실행하려면 원격 컴퓨터에 대한 영구 연결이 필요합니다. 이런 경우 PSSession을 만든 다음 Session 매개 변수를 사용하여 PSSession에서 명령을 실행합니다.

원격 컴퓨터에서 데이터를 가져오는 다른 많은 cmdlet(예: Get-Process, Get-Service, Get-EventLog 및 Get-WmiObject)에는 ComputerName 매개 변수만 있습니다. 이러한 cmdlet은 Windows PowerShell 원격 이외의 기술을 사용하여 데이터를 원격으로 수집합니다. 이러한 cmdlet에는 Session 매개 변수가 없지만 Invoke-Command cmdlet을 사용하여 PSSession에서 이러한 명령을 실행할 수 있습니다.

PSSESSION은 어떻게 만드나요?

PSSession을 만들려면 New-PSSession cmdlet을 사용합니다. New-PSSession을 사용하여 로컬 컴퓨터나 원격 컴퓨터에서 PSSession을 만들 수 있습니다.

모든 컴퓨터에서 PSSESSION을 만들 수 있나요?

원격 컴퓨터에 연결된 PSSession을 만들려면 Windows PowerShell에서 원격 기능을 사용하도록 컴퓨터를 구성해야 합니다. 현재 사용자는 원격 컴퓨터에서 Administrators 그룹의 구성원이거나 Administrators 그룹 구성원의 자격 증명을 제공할 수 있어야 합니다. 자세한 내용은 about_Remote_Requirements를 참조하세요.

다른 세션에서 내 PSSESSION을 볼 수 있나요?

Windows PowerShell 3.0부터 Get-PSSession cmdlet의 ComputerName 매개 변수는 지정된 원격 컴퓨터에서 만들 PSSession을 가져옵니다.

활성 PSSession은 원격 컴퓨터(연결의 "서버 쪽")에서 유지 관리되므로 모든 컴퓨터의 모든 세션에서 가져올 수 있습니다.

예를 들어 Server01 컴퓨터에서 Server02 컴퓨터로 PSSession을 만든 다음 Server03 컴퓨터로 전환하는 경우 다음과 같은 명령을 사용하여 세션을 가져올 수 있습니다.

      Get-PSSession -ComputerName Server02

세션에서 연결을 끊는 경우에도 세션은 해당 세션을 삭제하거나 세션 시간이 초과될 때까지 원격 컴퓨터에서 유지 관리됩니다.

Windows PowerShell 2.0에서는 현재 세션에서 만든 PSSession만 가져올 수 있습니다. 다른 세션에서 만든 PSSession은 가져올 수 없습니다.

자세한 내용은 Get-PSSession을 참조하세요.

다른 사용자가 내 컴퓨터에서 만든 PSSESSION을 볼 수 있나요?

PSSession을 만든 사용자의 자격 증명을 제공할 수 있거나 PSSession에서 사용하는 세션 구성에 RunAs 자격 증명이 포함된 경우에만 다른 사용자가 만든 PSSession을 가져오고 관리할 수 있습니다. 그렇지 않은 경우 직접 만든 PSSession만 가져오고 연결하여 사용하고 관리할 수 있습니다.

다른 컴퓨터에서 PSSESSION에 연결할 수 있나요?

Windows PowerShell 3.0부터 PSSession은 해당 PSSession이 만들어진 세션과 독립적입니다. 활성 PSSession은 원격 컴퓨터 또는 연결의 "서버 쪽"에서 유지 관리됩니다.

Disconnect-PSSession cmdlet을 사용하여 PSSession에서 연결을 끊을 수 있습니다. PSSession은 로컬 세션에서 연결이 끊기지만 원격 컴퓨터에서는 유지 관리됩니다. 명령은 연결이 끊긴 PSSession에서 계속 실행됩니다. PSSession을 중단하지 않고도 Windows PowerShell을 닫고 원래 컴퓨터를 종료할 수 있습니다.

그러면 몇 시간 후에도 Get-PSSession cmdlet을 사용하여 PSSession을 가져오고 Connect-PSSession cmdlet을 사용하여 다른 컴퓨터의 새 세션에서 PSSession에 연결할 수 있습니다.

자세한 내용은 about_Remote_Disconnected_Sessions(https://go.microsoft.com/fwlink/?LinkID=252847)(영문)를 참조하세요.

내 컴퓨터가 중지하면 내 PSSESSION은 어떻게 되나요?

연결이 끊긴 PSSession은 해당 PSSession이 만들어진 세션과 독립적입니다. PSSession의 연결을 끊은 다음 원래 컴퓨터를 닫으면 PSSession은 원격 컴퓨터에 유지 관리됩니다.

또한 Windows PowerShell은 컴퓨터 재부팅, 일시적인 정전 또는 네트워크 중단 등 의도하지 않게 연결이 끊긴 활성 PSSession을 복구하려고 합니다. Windows PowerShell은 원래 세션을 계속 사용할 수 있는 경우 열린 상태로 또는 사용할 수 없는 경우 연결이 끊긴 상태로 PSSession을 유지 관리하거나 복구하려고 합니다.

"활성" PSSession은 명령을 실행하고 있는 세션입니다. PSSession이 연결되어 있고(연결이 끊기지 않음) 연결된 세션을 닫을 때 명령이 PSSession에서 실행되고 있으면 Windows PowerShell은 원격 컴퓨터에서 PSSession을 유지 관리하려고 합니다. 그러나 PSSession에서 명령이 실행되고 있지 않으면 Windows PowerShell은 연결된 세션을 닫을 때 PSSession을 닫습니다.

자세한 내용은 about_Remote_Disconnected_Sessions(https://go.microsoft.com/fwlink/?LinkID=252847)(영문)를 참조하세요.

PSSESSION에서 백그라운드 작업을 실행할 수 있나요?

예. 백그라운드 작업은 현재 세션과 상호 작용하지 않고 백그라운드에서 비동기적으로 실행되는 명령입니다. 명령을 전송하여 작업을 시작하면 명령은 작업 개체를 반환하지만 작업은 완료될 때까지 백그라운드에서 계속 실행됩니다.

로컬 컴퓨터에서 백그라운드 작업을 시작하려면 Start-Job 명령을 사용합니다. 백그라운드 작업은 ComputerName 매개 변수를 사용하여 임시 연결에서 실행하거나 Session 매개 변수를 사용하여 PSSession에서 실행할 수 있습니다.

원격 컴퓨터에서 백그라운드 작업을 시작하려면 AsJob 매개 변수와 함께 Invoke-Command cmdlet을 사용하거나 Invoke-Command cmdlet을 사용하여 원격 컴퓨터에서 Start-Job 명령을 실행합니다. AsJob 매개 변수를 사용하면 ComputerName 또는 Session 매개 변수를 사용할 수 있습니다.

Invoke-Command를 사용하여 Start-Job 명령을 실행하는 경우 PSSession에서 이 명령을 실행해야 합니다. ComputerName 매개 변수를 사용하는 경우 Windows PowerShell은 작업 개체가 반환되고 작업이 중단될 때 연결을 종료합니다.

자세한 내용은 about_Jobs를 참조하세요.

대화형 세션을 실행할 수 있나요?

예. 원격 컴퓨터와 대화형 세션을 시작하려면 Enter-PSSession cmdlet을 사용합니다. 대화형 세션에서는 사용자가 입력하는 명령이 원격 컴퓨터에서 직접 입력한 것처럼 원격 컴퓨터에서 실행됩니다.

대화형 세션은 ComputerName 매개 변수를 사용하여 임시 세션에서 실행하거나 Session 매개 변수를 사용하여 PSSession에서 실행할 수 있습니다. PSSession을 사용하는 경우 PSSession은 이전 명령의 데이터를 유지하고 이후 명령에서 사용하기 위해 대화형 세션 중에 생성된 모든 데이터를 유지합니다.

대화형 세션을 종료해도 PSSession은 열려 있으므로 계속 사용할 수 있습니다.

자세한 내용은 Enter-PSSession 및 Exit-PSSession을 참조하세요.

PSSESSION을 삭제해야 하나요?

예. PSSession은 프로세스이며 사용자가 사용하지 않는 경우에도 메모리와 기타 리소스를 사용하는 자체 포함된 환경입니다. PSSession 사용을 마쳤으면 PSSession을 삭제해야 합니다. 여러 PSSession을 만드는 경우에는 사용 중이 아닌 PSSession을 닫고 현재 사용 중인 PSSession만 유지 관리합니다.

PSSession을 삭제하려면 Remove-PSSession cmdlet을 사용합니다. 이 cmdlet은 PSSession을 삭제하고 PSSession에서 사용 중이던 리소스를 모두 해제합니다.

또한 New-PSSessionOption의 IdleTimeOut 매개 변수를 사용하여 사용자가 지정한 간격 후에 유휴 PSSession을 닫을 수 있습니다. 자세한 내용은 New-PSSessionOption을 참조하세요.

PSSession 개체를 변수에 저장한 다음 PSSession을 삭제하거나 시간이 초과되도록 두면 변수에 여전히 PSSession 개체가 포함되어 있지만 PSSession이 활성 상태가 아니며 사용하거나 복구할 수 없습니다.

모든 세션과 PSSession이 비슷한가요?

아니요. 개발자는 선택된 공급자와 cmdlet만 포함된 사용자 지정 세션을 만들 수 있습니다. 명령이 한 세션에서 작동하지만 다른 세션에서는 작동하지 않는 경우 세션이 제한되어 있기 때문일 수 있습니다.

참고 항목

about_Jobs

about_PSSessions

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Invoke-Command

New-PSSession

Get-PSSession

Remove-PSSession

Enter-PSSession

Exit-PSSession