항목
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