about_Remote_Requirements — PowerShell 원격 실행 요구 사항
about_Remote_Requirements — PowerShell 원격 실행 요구 사항
PowerShell로 다른 컴퓨터에서 명령을 실행하려고 하면 좋겠지만, 그전에 원격 기능이 제대로 갖춰져 있는 컴퓨터인지부터 확인해야 해요. 이 문서는 PowerShell 원격 연결을 만들고 원격 명령을 실행하는 데 필요한 시스템 요구 사항, 사용자 권한, 그리고 구성 방법을 하나로 정리해 준 내용이에요. 인프라가 어떤 버전끼리 맞물려야 하는지, 누가 원격으로 접속할 수 있는지, 그리고 방화벽·관리자 권한 같은 실제 장애물을 어떻게 넘어야 하는지 순서대로 설명할게요.
출처: about_Remote_Requirements (Microsoft Learn, 2025-11-07 갱신)
본문
짧은 설명
PowerShell에서 원격 명령을 실행하기 위한 시스템 요구 사항과 구성 요구 사항을 설명해요.
긴 설명
이 항목은 PowerShell에서 원격 연결을 맺고 원격 명령을 실행하는 데 필요한 시스템 요구 사항, 사용자 요구 사항, 리소스 요구 사항을 다루고, 원격 작업을 구성하는 방법도 알려줘요.
한 가지 먼저 짚고 넘어갈게요. 어떤 cmdlet은 PowerShell 리모팅 인프라를 쓰지 않고 RPC 연결이나 WMI 세션으로 원격 컴퓨터에서 개체를 가져오기도 해요. 이 문서의 요구 사항은 그런 cmdlet에는 적용되지 않아요.
ComputerName 매개 변수가 있는데도 PowerShell 리모팅을 쓰지 않는 cmdlet을 찾으려면, 해당 cmdlet의 ComputerName 매개 변수 설명을 읽어보면 돼요.
시스템 요구 사항
Windows에서 PowerShell 리모팅은 Windows Management Framework(WMF)가 제공하는 **Windows Remote Management(WinRM)**를 사용해요. PowerShell에서 원격 세션을 실행하려면 로컬 컴퓨터와 원격 컴퓨터 둘 다 다음 항목을 갖춰야 해요.
- Windows PowerShell 3.0 이상
- Microsoft .NET Framework 4 이상
- Windows Remote Management 3.0 이상
Windows PowerShell 2.0에서 원격 세션을 실행하려면 로컬·원격 컴퓨터 모두 다음 항목이 필요해요.
- Windows PowerShell 2.0 이상
- Microsoft .NET Framework 2.0 이상
- Windows Remote Management 2.0
완전히 지원받으려면 WMF 5.1을 쓰는 게 좋아요. WMF 지원에 대한 자세한 내용은 Windows Management Framework (WMF)를 참고하세요.
Windows PowerShell 2.0을 쓰는 컴퓨터와 더 새로운 버전의 PowerShell을 쓰는 컴퓨터 사이에서도 원격 세션을 만들 수 있어요. 다만 세션을 끊었다가 다시 연결하는 기능처럼 새 버전에서만 동작하는 기능은 두 컴퓨터 모두 Windows PowerShell 3.0 이상을 실행할 때만 쓸 수 있어요.
설치된 PowerShell 버전 번호를 확인하려면 $PSVersionTable 자동 변수를 사용하면 돼요.
PowerShell 7 이상은 SSH를 통한 PowerShell 리모팅도 지원해요. 이 방식은 SSH가 실행 중인 Windows, macOS, Linux 호스트 어디든 연결할 수 있게 해주죠. 자세한 내용은 PowerShell Remoting Over SSH를 참고하세요.
사용자 권한
원격 세션을 만들고 원격 명령을 실행하려면 원격 컴퓨터의 Administrators 그룹 또는 Remote Management Users 그룹의 멤버인 사용자 계정으로 연결해야 해요.
원격 컴퓨터에서 세션을 만들고 명령을 실행하는 데 필요한 권한은 **세션 구성(session configuration)**이 정해요. 세션 구성은 원격 컴퓨터의 연결 엔드포인트에 대한 구성 옵션을 정의하죠. 구체적으로 말하면, 세션 구성의 보안 설명자가 누가 그 세션 구성에 접근할 수 있고, 누가 그걸 사용해 연결할 수 있는지를 결정해요.
기본 세션 구성인 Microsoft.PowerShell과 Microsoft.PowerShell32의 보안 설명자는 Administrators 그룹 멤버만 접근을 허용해요.
컴퓨터의 Administrators 그룹 멤버는 기본 세션 구성의 보안 설명자를 바꾸거나, 다른 보안 설명자를 가진 새 세션 구성을 만들어서 누가 원격으로 접속할 수 있는지를 정할 수 있어요. 사용자는 *-PSSession cmdlet의 ConfigurationName 매개 변수로 서로 다른 엔드포인트에 연결할 수 있죠.
세션 구성에 대한 자세한 내용은 about_Session_Configurations를 참고하세요.
Windows 네트워크 위치
Windows PowerShell 3.0부터 Enable-PSRemoting cmdlet은 Windows의 클라이언트 버전과 서버 버전 양쪽에서 리모팅을 활성화할 수 있어요.
Windows 서버 버전의 개인 네트워크와 도메인 네트워크에서는 Enable-PSRemoting이 무제한 원격 접근을 허용하는 방화벽 규칙을 만들어요. 공용 네트워크용으로는 같은 로컬 서브넷의 컴퓨터에서만 원격 접근을 허용하는 방화벽 규칙도 만들고요. 이 로컬 서브넷 규칙은 서버 버전 Windows의 공용 네트워크에서 기본적으로 활성화되어 있는데, Enable-PSRemoting을 실행하면 규칙이 바뀌거나 삭제됐을 때를 대비해 다시 적용해 줘요.
Windows 클라이언트 버전의 개인 네트워크와 도메인 네트워크에서는 Enable-PSRemoting이 무제한 원격 접근을 허용하는 방화벽 규칙을 만들어요.
공용 네트워크의 Windows 클라이언트 버전에서 리모팅을 활성화하려면 Enable-PSRemoting cmdlet의 SkipNetworkProfileCheck 매개 변수를 사용해야 해요. 이 옵션은 같은 로컬 서브넷의 컴퓨터에서만 원격 접근을 허용하는 방화벽 규칙을 만들어 주죠.
공용 네트워크의 로컬 서브넷 제한을 없애고 Windows 클라이언트·서버 버전 어디서든 원격 접근을 허용하려면 NetSecurity 모듈의 Set-NetFirewallRule cmdlet을 사용하면 돼요. 다음 명령을 실행하면 됩니다.
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
참고할 점이 있어요. 방화벽 규칙 이름은 Windows 버전마다 다를 수 있어요. 규칙 목록을 보려면 Get-NetFirewallRule을 사용하세요. 방화벽 규칙을 활성화하기 전에 규칙 안의 보안 설정을 확인해서 환경에 맞는 구성인지 검증해 보는 게 좋아요.
Windows PowerShell 2.0에서는 서버 버전 Windows에서 Enable-PSRemoting이 모든 네트워크에서 원격 접근을 허용하는 방화벽 규칙을 만들어요.
Windows PowerShell 2.0에서는 클라이언트 버전 Windows에서 Enable-PSRemoting이 개인 네트워크와 도메인 네트워크에서만 규칙을 만들어요. 네트워크 위치가 공용이면 Enable-PSRemoting은 실패하죠.
관리자 권한으로 실행
다음 리모팅 작업에는 관리자 권한이 필요해요.
- 로컬 컴퓨터로의 원격 연결 만들기. 이걸 흔히 "루프백(loopback)" 시나리오라고 불러요.
- 로컬 컴퓨터의 세션 구성 관리하기
- 로컬 컴퓨터의 WS-Management 설정 확인 및 변경하기. 이 설정은
WSMan:드라이브의 LocalHost 노드에 있어요.
로컬 컴퓨터에서 Administrators 그룹 멤버라고 해도, 반드시 "관리자 권한으로 실행" 옵션으로 PowerShell을 시작해야 해요.
cmd.exe 같은 다른 프로그램에서 Windows PowerShell을 시작할 때도 그 프로그램을 "관리자 권한으로 실행" 옵션으로 시작해야 해요.
리모팅을 위해 컴퓨터 구성하기
지원되는 Windows 버전을 실행하는 컴퓨터라면 아무 구성 없이도 PowerShell에서 원격 연결을 만들고 원격 명령을 실행할 수 있어요. 다만 원격 연결을 받으려면 그 컴퓨터에서 PowerShell 리모팅을 활성화해야 해요.
Windows Server 2012와 이후의 Windows Server 릴리스는 기본적으로 PowerShell 리모팅이 켜져 있어요. 설정이 바뀌었다면 Enable-PSRemoting cmdlet을 실행해 기본 설정으로 되돌릴 수 있어요.
기본적으로 PowerShell의 리모팅 기능은 WinRM 서비스가 뒷받침해요. WinRM은 WS-Management(Web Services for Management) 프로토콜의 Microsoft 구현이죠. PowerShell 리모팅을 활성화하면 WS-Management의 기본 구성을 바꾸고, 사용자가 WS-Management에 연결할 수 있게 해주는 시스템 구성을 추가해요.
PowerShell이 원격 명령을 받도록 구성하려면:
- PowerShell을 관리자 권한으로 실행으로 시작해요.
- 명령 프롬프트에
Enable-PSRemoting을 입력해요.
리모팅이 제대로 구성됐는지 확인하려면 아래처럼 로컬 컴퓨터에 원격 세션을 만드는 테스트 명령을 실행해 보면 돼요.
New-PSSession
리모팅이 제대로 구성됐다면, 이 명령은 로컬 컴퓨터에 세션을 만들고 그 세션을 나타내는 개체를 돌려줘요.
Id Name ComputerName State ConfigurationName
-- ---- ------------ ----- -----
1 Session1 localhost Opened Microsoft.PowerShell
명령이 실패하면 about_Remote_Troubleshooting을 참고하세요.
PowerShell Remoting Protocol(PSRP)은 안전한 데이터 전송을 위해 보안 전송 계층을 요구해요. 자세한 내용은 PowerShell security features 문서의 "Secure data transfer in PowerShell remoting" 섹션을 확인하세요.
정책 이해하기
원격에서 작업할 때는 PowerShell 인스턴스가 두 개 있어요. 하나는 로컬 컴퓨터에, 하나는 원격 컴퓨터에 있죠. 그래서 로컬 컴퓨터와 원격 컴퓨터 양쪽의 Windows·PowerShell 정책이 작업에 영향을 줘요.
연결하기 전과 연결을 맺는 동안에는 로컬 컴퓨터의 정책이 적용돼요. 연결을 사용하는 동안에는 원격 컴퓨터의 정책이 적용되죠.