about_PSSessions
간단한 설명
PowerShell 세션(PSSessions)에 대해 설명하고 원격 컴퓨터에 대한 영구 연결을 설정하는 방법을 설명합니다.
자세한 설명
원격 컴퓨터에서 PowerShell 명령을 실행하려면 cmdlet의 ComputerName 매개 변수를 사용하거나 PSSession에서 PowerShell 세션(PSSession)을 만들고 명령을 실행할 수 있습니다.
PSSession을 만들 때 PowerShell은 원격 컴퓨터에 대한 영구 연결을 설정합니다. PSSession을 사용하여 원격 컴퓨터에서 일련의 관련 명령을 실행합니다. 동일한 PSSession에서 실행되는 명령은 변수, 별칭 및 함수의 값과 같은 데이터를 공유할 수 있습니다.
로컬 컴퓨터에서 PSSession을 만들고 해당 컴퓨터에서 명령을 실행할 수도 있습니다. 로컬 PSSession은 PowerShell 원격 인프라를 사용하여 PSSession을 만들고 유지 관리합니다.
Windows PowerShell 3.0부터 Windows의 PSSessions는 생성된 세션과 독립적입니다. 활성 PSSessions는 원격 컴퓨터(또는 연결의 원격 끝 또는 "서버 쪽"에 있는 컴퓨터)에서 유지 관리됩니다. 따라서 Windows에서 원격 Windows 컴퓨터의 PSSession에서 연결을 끊고 나중에 동일한 컴퓨터 또는 다른 Windows 컴퓨터에서 다시 연결할 수 있습니다.
이 항목에서는 PSSessions를 만들고, 사용하고, 가져와서 삭제하는 방법을 설명합니다. 자세한 내용은 about_PSSession_Details 참조하세요.
참고: PSSessions는 PowerShell 원격 인프라를 사용합니다. PSSessions를 사용하려면 원격으로 로컬 및 원격 컴퓨터를 구성해야 합니다. 자세한 내용은 about_Remote_Requirements 참조하세요.
Windows Vista 이상 버전의 Windows에서 로컬 컴퓨터에서 PSSession을 만들려면 "관리자 권한으로 실행" 옵션을 사용하여 PowerShell을 시작해야 합니다.
세션이란?
세션은 PowerShell이 실행되는 환경입니다.
PowerShell을 시작할 때마다 세션이 만들어지고 세션에서 명령을 실행할 수 있습니다. 모듈 및 스냅인과 같은 항목을 세션에 추가하고 변수, 함수 및 별칭과 같은 항목을 만들 수도 있습니다. 이러한 항목은 세션에만 존재하며 세션이 종료될 때 삭제됩니다.
로컬 컴퓨터 또는 원격 컴퓨터에서 "PowerShell 세션" 또는 "PSSessions"라고 하는 사용자 관리 세션을 만들 수도 있습니다. 기본 세션과 마찬가지로 PSSession에서 명령을 실행하고 항목을 추가하고 만들 수 있습니다. 그러나 자동으로 시작되는 세션과 달리 만든 PSSessions를 제어할 수 있습니다. 가져오기, 만들기, 구성 및 제거, 연결 끊기 및 다시 연결, 동일한 PSSession에서 여러 명령을 실행할 수 있습니다. PSSession은 삭제하거나 시간이 초과될 때까지 계속 사용할 수 있습니다.
일반적으로 PSSession을 만들어 원격 컴퓨터에서 일련의 관련 명령을 실행합니다. 원격 컴퓨터에서 PSSession을 만들 때 PowerShell은 세션을 지원하기 위해 원격 컴퓨터에 대한 영구 연결을 설정합니다.
또는 Enter-PSSession
cmdlet의 Invoke-Command
ComputerName 매개 변수를 사용하여 원격 명령을 실행하거나 대화형 세션을 시작하는 경우 PowerShell은 원격 컴퓨터에서 임시 세션을 만들고 명령이 완료되는 즉시 또는 대화형 세션이 종료되는 즉시 세션을 닫습니다. 이러한 임시 세션을 제어할 수 없으며 둘 이상의 명령 또는 단일 대화형 세션에 사용할 수 없습니다.
PowerShell에서 "현재 세션"은 작업 중인 세션입니다. "현재 세션"은 임시 세션 또는 PSSession을 포함하여 모든 세션을 참조할 수 있습니다.
PSSession을 사용하는 이유
원격 컴퓨터에 대한 영구 연결이 필요한 경우 PSSession을 사용합니다. PSSession을 사용하면 변수 값, 함수 내용 또는 별칭 정의와 같은 데이터를 공유하는 일련의 명령을 실행할 수 있습니다.
PSSession을 만들지 않고 원격 명령을 실행할 수 있습니다. 원격 사용 cmdlet의 ComputerName 매개 변수를 사용하여 하나 이상의 컴퓨터에서 단일 명령 또는 일련의 관련 없는 명령을 실행합니다.
또는 Enter-PSSession
ComputerName 매개 변수 Invoke-Command
를 사용하는 경우 PowerShell은 원격 컴퓨터에 대한 임시 연결을 설정한 다음 명령이 완료되는 즉시 연결을 닫습니다. 연결을 닫으면 만드는 모든 데이터 요소가 손실됩니다.
ComputerName 매개 변수와 같은 Get-Eventlog
Get-WmiObject
다른 cmdlet은 다른 원격 기술을 사용하여 데이터를 수집합니다. PSSession과 같은 영구 연결을 만들지 않습니다.
PSSession을 만드는 방법
PSSession을 만들려면 cmdlet을 New-PSSession
사용합니다. 원격 컴퓨터에서 PSSession을 만들려면 cmdlet의 ComputerName 매개 변수를 New-PSSession
사용합니다.
예를 들어 다음 명령은 Server01 컴퓨터에 새 PSSession을 만듭니다.
New-PSSession -ComputerName Server01
명령을 New-PSSession
제출할 때 PSSession을 만들고 PSSession을 나타내는 개체를 반환합니다. PSSession을 만들 때 변수에 개체를 저장하거나 명령을 사용하여 Get-PSSession
나중에 PSSession을 가져올 수 있습니다.
예를 들어 다음 명령은 Server01 컴퓨터에 새 PSSession을 만들고 결과 개체를 $ps 변수에 저장합니다.
$ps = New-PSSession -ComputerName Server01
여러 컴퓨터에서 PSSessions를 만드는 방법
여러 컴퓨터에서 PSSessions를 만들려면 cmdlet의 ComputerName 매개 변수를 New-PSSession
사용합니다. 쉼표로 구분된 목록에 원격 컴퓨터의 이름을 입력합니다.
예를 들어 Server01, Server02 및 Server03 컴퓨터에서 PSSessions를 만들려면 다음을 입력합니다.
New-PSSession -ComputerName Server01, Server02, Server03
New-PSSession
는 각 원격 컴퓨터에 하나의 PSSession을 만듭니다.
PSSessions를 가져오는 방법
현재 세션에서 만든 PSSessions를 얻으려면 ComputerName 매개 변수 없이 cmdlet을 사용합니다Get-PSSession
. Get-PSSession
는 반환하는 동일한 형식의 개체를 반환합니다 New-PSSession
.
다음 명령은 현재 세션에서 만든 모든 PSSessions를 가져옵니다.
Get-PSSession
PSSessions의 기본 표시에는 해당 ID와 기본 표시 이름이 표시됩니다. 세션을 만들 때 대체 표시 이름을 할당할 수 있습니다.
Id Name ComputerName State ConfigurationName
--- ---- ------------ ----- ---------------------
1 Session1 Server01 Opened Microsoft.PowerShell
2 Session2 Server02 Opened Microsoft.PowerShell
3 Session3 Server03 Opened Microsoft.PowerShell
PSSessions를 변수에 저장할 수도 있습니다. 다음 명령은 PSSessions를 가져오고 $ps 123 변수에 저장합니다.
$ps123 = Get-PSSession
PSSession cmdlet을 사용하는 경우 ID, 이름 또는 인스턴스 ID(GUID)로 PSSession을 참조할 수 있습니다. 다음 명령은 ID로 PSSession을 가져오고 $ps 01 변수에 저장합니다.
$ps01 = Get-PSSession -Id 1
Windows PowerShell 3.0부터 PSSessions는 원격 컴퓨터에서 유지 관리됩니다. 특정 원격 컴퓨터에서 만든 PSSessions를 얻으려면 cmdlet의 ComputerName 매개 변수를 Get-PSSession
사용합니다. 다음 명령은 Server01 원격 컴퓨터에서 만든 PSSessions를 가져옵니다. 여기에는 현재 세션 및 로컬 컴퓨터 또는 다른 컴퓨터의 다른 세션에서 만든 PSSessions가 포함됩니다.
Get-PSSession -ComputerName Server01
Windows PowerShell 2.0 Get-PSSession
에서 현재 세션에서 만든 PSSessions만 가져옵니다. 세션이 연결되어 있고 로컬 컴퓨터에서 명령을 실행하더라도 다른 세션 또는 다른 컴퓨터에서 생성된 PSSessions는 가져올 수 없습니다.
PSSession에서 명령을 실행하는 방법
하나 이상의 PSSessions에서 명령을 실행하려면 cmdlet을 Invoke-Command
사용합니다.
Session 매개 변수를 사용하여 PSSessions 및 ScriptBlock 매개 변수를 지정하여 명령을 지정합니다.
예를 들어 $ps 123 변수에 저장된 세 가지 PSSessions 각각에서 ("dir") 명령을 실행 Get-ChildItem
하려면 다음을 입력합니다.
Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }
PSSessions를 삭제하는 방법
PSSession을 마쳤으면 cmdlet을 사용하여 Remove-PSSession
PSSession을 삭제하고 사용 중인 리소스를 해제합니다.
Remove-PSSession -Session $ps
또는
Remove-PSSession -Id 1
원격 컴퓨터에서 PSSession을 제거하려면 cmdlet의 ComputerName 매개 변수를 Remove-PSSession
사용합니다.
Remove-PSSession -ComputerName Server01 -Id 1
PSSession을 삭제하지 않으면 시간이 초과될 때까지 PSSession을 계속 사용할 수 있습니다.
cmdlet의 New-PSSessionOption
IdleTimeout 매개 변수를 사용하여 유휴 PSSession의 만료 시간을 설정할 수도 있습니다. 자세한 내용은 New-PSSessionOption을 참조하세요.
PSSession Cmdlet
PSSession cmdlet 목록의 경우 다음을 입력합니다.
Get-Help *-PSSession
- Connect-PSSession: PSSession을 현재 세션에 연결합니다.
- Disconnect-PSSession: 현재 세션에서 PSSession 연결 끊기
- Enter-PSSession: 대화형 세션을 시작합니다.
- Exit-PSSession: 대화형 세션 종료
- Get-PSSession: 현재 세션의 PSSessions를 가져옵니다.
- New-PSSession: 로컬 또는 원격 컴퓨터에 새 PSSession을 만듭니다.
- Receive-PSSession: 연결이 끊긴 세션에서 실행된 명령의 결과를 가져옵니다.
- Remove-PSSession: 현재 세션에서 PSSessions를 삭제합니다.
참고 항목
연결이 끊긴 세션은 Windows에서만 지원됩니다. , Disconnect-PSSession
및 Receive-PSSession
cmdlet은 Connect-PSSession
Windows에서만 사용할 수 있습니다. 연결이 끊긴 세션에 대한 자세한 내용은 about_Remote_Disconnected_Session 참조 하세요.
참조 항목
PSSessions에 대한 자세한 내용은 about_PSSession_Details 참조하세요.
참고 항목
PowerShell