개요
Enter-PSSession은 원격 컴퓨터 하나와 대화형 세션을 시작해, 그 뒤로 입력하는 모든 명령이 로컬이 아니라 원격 컴퓨터에서 실행되게 만든다. 83장에서 WinRM 리스너를 켜 둔 컴퓨터에, 마치 SSH로 로그인한 것처럼 직접 들어가 명령을 입력하는 첫 번째 방법이다.
정신 모델은 “프롬프트 자체가 원격 컴퓨터로 순간이동한다"는 것이다 — 명령을 입력하고 결과를 받는 감각은 로컬과 똑같지만, 실제로 실행되는 위치와 파일이 저장되는 위치가 전부 원격 컴퓨터로 바뀐다.
사용법
| |
종류
| 방식 | 설명 |
|---|---|
-ComputerName | 컴퓨터 이름을 직접 지정해 임시 연결(가장 흔한 사용법) |
-Session | 86장에서 만들 지속 세션(New-PSSession)에 대화형으로 진입 |
-Credential | 현재 로그인 계정이 아닌 다른 사용자로 인증 |
-Port / -UseSSL | 기본 WinRM 포트(5985/HTTP, 5986/HTTPS)가 아닌 값을 쓸 때 |
Exit-PSSession 또는 exit | 대화형 세션을 끝내고 로컬 프롬프트로 복귀(동작은 동일) |
예시
| |
주의사항·함정
한 번에 하나의 대화형 세션만 가능하다: Enter-PSSession은 현재 세션 자체를 원격 세션으로 대체하는 방식이라, 다른 컴퓨터에 동시에 대화형으로 접속하려면 먼저 exit로 나온 뒤 새로 Enter-PSSession을 실행해야 한다. 여러 컴퓨터에 동시에 명령을 내려야 한다면 다음 장의 Invoke-Command가 적합한 도구다.
함수나 스크립트 안에서 호출하도록 설계되지 않았다: 공식 문서도 명시하듯, Enter-PSSession은 현재 대화형 세션을 새 대화형 원격 세션으로 “치환"하는 용도로 설계됐다. 자동화 스크립트 안에서 이 cmdlet을 호출하면 스크립트의 흐름 자체가 원격 세션으로 넘어가 버려 예상과 다르게 동작한다 — 스크립트에서 원격 명령을 실행해야 한다면 Invoke-Command를 써야 한다.
원격 컴퓨터의 사용자 프로필이 적용되므로, 로컬과 명령 프롬프트·별칭이 다르게 보일 수 있다: Enter-PSSession으로 들어간 세션은 접속 계정의 원격 컴퓨터 프로필(06장에서 배운 $PROFILE)을 그대로 로드한다. 로컬에서 익숙했던 사용자 정의 함수·별칭이 원격 세션에는 없을 수 있고, 반대로 원격 프로필이 정의한 것들이 낯설게 나타날 수 있다.
Disconnect-PSSession/Connect-PSSession으로 대화형 세션을 끊었다 다시 연결할 수는 없다: 86장에서 다룰 지속 세션과 달리, Enter-PSSession이 만든 임시 연결은 연결 해제 후 재연결 기능을 지원하지 않는다. 네트워크가 끊기면 세션 자체가 사라진다.
이식성: ssh user@host로 원격 셸에 로그인해 프롬프트가 바뀌는 경험과 정확히 같은 개념이다 — 88장에서 다룰 SSH 기반 Remoting을 쓰면 실제로 Enter-PSSession -HostName이 이와 매우 비슷한 사용자 경험을 제공한다. CMD에는 대화형 원격 세션에 대응하는 표준 도구가 없다.
![Featured image of post [PowerShell] 84. Enter-PSSession — 대화형 원격 세션](/post/powershell/enter-pssession-interactive-remote-powershell/wordcloud_hu_2213928958c3b911.webp)
![[PowerShell] 82. PSWindowsUpdate — Windows 업데이트 관리 모듈](/post/powershell/pswindowsupdate-module-powershell/wordcloud_hu_3d62c398e34bd307.webp)
![[PowerShell] 83. PowerShell Remoting 개념과 WinRM 활성화](/post/powershell/powershell-remoting-winrm-enable-powershell/wordcloud_hu_4444c309846040dd.webp)
![[PowerShell] 84. Enter-PSSession — 대화형 원격 세션](/post/powershell/enter-pssession-interactive-remote-powershell/wordcloud_hu_24c82b8d46d3843e.webp)
![[PowerShell] 85. Invoke-Command — 원격 명령 실행](/post/powershell/invoke-command-remote-execution-powershell/wordcloud_hu_b2fb59e6cb4d3966.webp)
![[PowerShell] 86. New-PSSession — 지속 세션 관리](/post/powershell/new-pssession-persistent-session-powershell/wordcloud_hu_51a31538b35462d9.webp)
![[PowerShell] 00. 과정 개요와 커리큘럼](/post/powershell/getting-started-powershell/wordcloud_hu_15979a96cd2a594f.webp)
![[PowerShell] 100. Get-Credential과 PSCredential 객체](/post/powershell/get-credential-pscredential-object-powershell/wordcloud_hu_e8db052a57f9c242.webp)
![[PowerShell] 34. Copy-Item — 복사](/post/powershell/copy-item-command-copy-file-powershell/wordcloud_hu_ebeda4bcc9a1c9ff.webp)