PowerShell Remoting을 사용하여 모바일에서 PC를 제어하는 ​​방법

마지막 업데이트 : 15/10/2025

  • 원격은 WinRM/WS-Man(HTTP/HTTPS)을 사용하고 보안 제어를 통해 1대1, 1대다 및 지속 세션을 허용합니다.
  • Enable-PSRemoting은 서비스, 리스너, 방화벽을 구성합니다. HTTPS에는 유효한 인증서와 CN/SAN 일치가 필요합니다.
  • 결과는 역직렬화된 상태로 반환됩니다. 메서드는 원격 스크립트 블록 내에서 호출되고 사용자 정의 엔드포인트는 세분화된 위임에 사용됩니다.
PowerShell 원격

여러분은 이미 PowerShell을 사용하여 로컬에서 많은 작업을 자동화하고 있을 수 있지만 실제로는 어디에서 자동화합니까? PowerShell Remoting이 차이를 만듭니다 원격 컴퓨터에서 명령을 실행하는 방식입니다. 몇 대든 수백 대든, 대화형 또는 병렬로 실행할 수 있습니다. Windows PowerShell 2.0부터 사용 가능하고 3.0 이후 향상된 이 기술은 WS-Management(WinRM)를 기반으로 하며, PowerShell을 견고하고 확장 가능하며 안전한 원격 관리 채널입니다.

우선, 두 가지 핵심 아이디어를 이해하는 것이 중요합니다. cmdlets -ComputerName 매개변수 (예: Get-Process 또는 Get-Service)는 Microsoft에서 권장하는 장기 경로가 아니며 PowerShell Remoting은 "해킹"으로 작동하지 않습니다. 사실, 상호 인증을 시행합니다자격 증명을 저장하거나 최고 권한으로 무언가를 마법처럼 실행하지 않고도 감사 로그를 작성하고 일반적인 권한을 존중합니다.

PowerShell Remoting이란 무엇이고 왜 사용해야 하나요?

PowerShell Remoting 너는 할 수있다. 거의 모든 명령을 원격으로 실행 로컬 세션에서 실행하여 서비스 쿼리부터 구성 배포까지 수백 대의 컴퓨터에서 동시에 실행할 수 있습니다. -ComputerName을 허용하는 cmdlet(대부분 DCOM/RPC 사용)과 달리, Remoting은 WS-Man(HTTP/HTTPS)을 통해 이동방화벽에 더 친화적인 방식은 병렬 처리를 허용하고 작업을 클라이언트가 아닌 원격 호스트로 오프로드합니다.

이는 세 가지 실질적인 이점으로 해석됩니다. 즉, 대량 실행 시 더 나은 성능입니다. 네트워크 내 마찰 감소 제한적인 규칙과 Kerberos/HTTPS와 일관된 보안 모델을 사용합니다. 또한, 각 cmdlet이 자체 원격을 구현하는 데 의존하지 않으므로 Remoting 모든 스크립트나 역할에 적용됩니다. 목적지에서 이용 가능한 것.

기본적으로 최신 Windows Server에는 원격 기능이 활성화되어 있습니다. Windows 10/11에서는 당신이 그것을 활성화합니다 단일 cmdlet으로 가능합니다. 물론, 대체 자격 증명, 영구 세션, 사용자 지정 엔드포인트 등을 사용할 수 있습니다.

참고: 원격 작업이 모든 것을 여는 것과 동일하지는 않습니다. 기본적으로 관리자만 연결은 가능하며, 작업은 해당 ID로 실행됩니다. 세밀한 위임이 필요한 경우, 사용자 지정 엔드포인트를 통해 필수 명령만 노출할 수 있습니다.

PowerShell Remoting 아키텍처

내부 작동 방식: WinRM, WS-Man 및 포트

PowerShell Remoting은 클라이언트-서버 모델로 작동합니다. 클라이언트는 다음을 통해 WS-Management 요청을 보냅니다. HTTP(5985/TCP) 또는 HTTPS(5986/TCP)대상에서 Windows 원격 관리(WinRM) 서비스는 수신 대기하고 엔드포인트(세션 구성)를 확인하며 백그라운드에서 PowerShell 세션을 호스팅합니다(wsmprovhost.exe 프로세스). 직렬화된 결과를 클라이언트에 반환 SOAP를 통한 XML로.

원격 기능을 처음 활성화하면 리스너가 구성되고, 적절한 방화벽 예외가 열리고, 세션 구성이 생성됩니다. PowerShell 6 이상에서는 여러 버전이 공존하며, Enable-PSRemoting 버전을 반영하는 이름(예: PowerShell.7 및 PowerShell.7.xy)으로 엔드포인트를 등록합니다.

독점 콘텐츠 - 여기를 클릭하세요  Intego Mac Internet Security의 성능 문제를 어떻게 해결합니까?

환경에서 HTTPS만 허용하는 경우 다음을 생성할 수 있습니다. 안전한 청취자 신뢰할 수 있는 CA에서 발급한 인증서(권장)를 사용하는 것이 좋습니다. 또는 작업 그룹 시나리오나 도메인에 속하지 않는 컴퓨터에 대해 TrustedHosts를 제한적이고 위험을 인지하는 방식으로 사용하는 것도 좋은 방법입니다.

PowerShell Remoting은 -ComputerName이 있는 cmdlet과 공존할 수 있지만 Microsoft가 WS-Man을 추진합니다 원격 관리를 위한 표준적이고 미래 지향적인 방법입니다.

PowerShell 원격 및 유용한 매개변수 활성화

Windows에서는 관리자 권한으로 PowerShell을 열고 실행하기만 하면 됩니다. Enable-PSRemoting시스템은 WinRM을 시작하고, 자동 시작을 구성하고, 리스너를 활성화하고, 적절한 방화벽 규칙을 생성합니다. 공용 네트워크 프로필을 사용하는 클라이언트에서는 다음을 통해 이를 의도적으로 허용할 수 있습니다. -네트워크프로필확인 건너뛰기 (그리고 구체적인 규칙으로 강화합니다):

Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force

 

구문은 또한 다음을 허용합니다. -확인하다 y -만약 변화 관리를 위해. 기억하세요: Windows에서만 사용 가능합니다관리자 권한 콘솔을 실행해야 합니다. 생성되는 규칙은 서버 버전과 클라이언트 버전 간에 다르며, 특히 공용 네트워크에서는 기본적으로 범위를 확장하지 않는 한(예: Set-NetFirewallRule) 로컬 서브넷으로 제한됩니다.

이미 기록된 세션 구성을 나열하고 모든 것이 준비되었는지 확인하려면 다음을 사용하세요. Get-PSSessionConfigurationPowerShell.x 및 Workflow 엔드포인트가 나타나면 Remoting 프레임워크가 작동합니다.

PowerShell을 사용한 원격 세션

사용 모드: 1대1, 1대다, 지속 세션

단일 컴퓨터에서 대화형 콘솔이 필요한 경우 다음을 참조하세요. Enter-PSSession프롬프트가 나타나고, 실행하는 모든 내용이 원격 호스트로 전송됩니다. Get-Credential을 사용하면 자격 증명을 재사용하여 계속해서 다시 입력하는 번거로움을 피할 수 있습니다.

$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession

여러 컴퓨터에 동시에 명령을 보내는 것이 목적이라면 이 도구가 적합합니다. Invoke-Command 스크립트 블록을 사용합니다. 기본적으로 최대 32개의 동시 연결을 시작합니다(-ThrottleLimit으로 조정 가능). 결과는 다음과 같이 반환됩니다. 역직렬화된 객체 (라이브 메서드 없이):

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred

.Stop()이나 .Start() 같은 메서드를 호출해야 하나요? 그렇게 하세요. 스크립트 블록 내부 로컬 역직렬화된 객체가 아니라 원격 컨텍스트에서 실행됩니다. 동등한 cmdlet(Stop-Service/Start-Service)이 있다면 명확성을 위해 해당 cmdlet을 사용하는 것이 좋습니다.

각 통화에서 세션을 시작하고 종료하는 데 드는 비용을 피하려면 다음을 생성하세요. 지속적인 PSSession 여러 호출에서 재사용하세요. New-PSSession을 사용하여 연결을 생성하고 Invoke-Command-Session을 사용하여 터널을 재사용하세요. 작업이 끝나면 Remove-PSSession으로 닫는 것을 잊지 마세요.

직렬화, 제한 및 모범 사례

중요한 세부 사항: 여행할 때 물체는 "+평평해지고" 도착합니다. 역직렬화된 스냅샷, 속성은 있지만 메서드는 없습니다. 이는 의도적인 설정이며 대역폭을 절약하지만, 로컬 복사본에서 로직을 실행하는 멤버(예: .Kill())를 사용할 수 없습니다. 해결책은 명확합니다. 해당 메서드를 호출하는 것입니다. 떨어져서 특정 필드만 필요한 경우 Select-Object로 필터링하여 더 적은 데이터를 전송합니다.

독점 콘텐츠 - 여기를 클릭하세요  TikTok에 대한 차단 및 제재를 피하는 방법은 무엇입니까?

스크립트에서는 Enter-PSSession(대화형 사용 목적)을 피하고 스크립트 블록과 함께 Invoke-Command를 사용하세요. 여러 번 호출될 것으로 예상되거나 상태(변수, 가져온 모듈)를 보존해야 하는 경우, 지속 세션 사용 그리고 해당되는 경우 PowerShell 3.0 이상에서 Disconnect-PSSession/Connect-PSSession을 사용하여 연결을 끊었다가 다시 연결합니다.

인증, HTTPS 및 오프 도메인 시나리오

도메인에서는 네이티브 인증이 Kerberos 모든 것이 자연스럽게 진행됩니다. 장치가 서버 이름을 확인할 수 없거나 CNAME IP 또는 별칭에 연결하는 경우 다음 두 가지 옵션 중 하나가 필요합니다. 1) 리스너 인증서가 있는 HTTPS 신뢰하는 CA에서 발급하거나 2) TrustedHosts에 대상(이름 또는 IP)을 추가합니다. 자격 증명을 사용하다두 번째 옵션은 해당 호스트에 대한 상호 인증을 비활성화하므로 범위가 필요한 최소한으로 줄어듭니다.

HTTPS 리스너를 설정하려면 팀 스토어에 설치하고 WinRM에 바인딩된 인증서(PKI 또는 공인 CA에서 발급한 인증서가 이상적임)가 필요합니다. 그런 다음 방화벽에서 포트 5986/TCP를 열고 클라이언트에서 해당 포트를 사용합니다. -SSL 사용 원격 cmdlet에서. 클라이언트 인증서 인증의 경우 인증서를 로컬 계정에 매핑하고 연결할 수 있습니다. -인증서지문 (Enter-PSSession은 이를 직접 허용하지 않습니다. 먼저 New-PSSession으로 세션을 생성하세요.)

두 번째 홉 및 자격 증명 위임

서버에 연결한 후 해당 서버가 다른 서버에 액세스해야 할 때 유명한 "더블 홉"이 나타납니다. 세 번째 리소스 사용자를 대신하여(예: SMB 공유). 이를 허용하는 방법에는 CredSSP와 리소스 기반 제한 Kerberos 위임의 두 가지 방법이 있습니다.

CredSSP 클라이언트와 중개자가 자격 증명을 명시적으로 위임할 수 있도록 하고, 특정 컴퓨터에 대한 위임을 허용하는 정책(GPO)을 설정합니다. 구성은 빠르지만, 암호화된 터널 내에서 자격 증명이 일반 텍스트로 전송되므로 보안성이 떨어집니다. 항상 출처와 대상을 제한하세요.

도메인에서 선호되는 대안은 다음과 같습니다. 제한된 Kerberos 위임 (리소스 기반 제한 위임) 최신 AD에서 제공됩니다. 이를 통해 엔드포인트는 특정 서비스에 대한 위임을 중간 지점에서 수신할 수 있으므로 초기 연결 시 신원 노출을 방지할 수 있습니다. 최신 도메인 컨트롤러와 업데이트된 RSAT가 필요합니다.

사용자 정의 엔드포인트(세션 구성)

Remoting의 장점 중 하나는 연결 지점을 등록할 수 있다는 것입니다. 맞춤형 기능 및 한계. 먼저 New-PSSessionConfigurationFile(사전 로드할 모듈, 표시 가능한 함수, 별칭, ExecutionPolicy, LanguageMode 등)을 사용하여 파일을 생성한 다음 Register-PSSessionConfiguration을 사용하여 등록합니다. 여기서 다음을 설정할 수 있습니다. 자격 증명으로 실행 및 권한(SDDL 또는 -ShowSecurityDescriptorUI가 있는 GUI 인터페이스).

안전한 위임을 위해 -VisibleCmdlets/-VisibleFunctions를 사용하여 필요한 것만 노출하고 적절한 경우 자유 스크립팅을 비활성화합니다. 언어 모드 제한 언어 또는 NoLanguage. FullLanguage를 종료하면 누군가가 스크립트 블록을 사용하여 노출되지 않은 명령을 호출할 수 있으며, 이는 RunAs와 함께 사용되어 그것은 구멍이 될 것이다. 이러한 종료점을 면밀히 설계하고 범위를 문서화합니다.

도메인, GPO 및 그룹웨어

AD에서는 GPO를 사용하여 PowerShell Remoting을 대규모로 배포할 수 있습니다. WinRM 리스너의 자동 구성을 허용합니다. 서비스를 자동으로 설정하세요방화벽 예외를 생성하세요. GPO는 설정을 변경하지만, 항상 서비스를 즉시 활성화하는 것은 아니라는 점을 기억하세요. 경우에 따라 재시작하거나 gpupdate를 강제로 실행해야 할 수도 있습니다.

독점 콘텐츠 - 여기를 클릭하세요  Gmail 비밀번호를 아는 방법

작업 그룹(비도메인)에서 원격을 구성합니다. Enable-PSRemoting클라이언트에서 TrustedHosts를 설정하고(winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) 로컬 자격 증명을 사용합니다. HTTPS의 경우 자체 서명된 인증서를 마운트할 수 있지만 신뢰할 수 있는 CA를 사용하는 것이 좋습니다. 이름을 검증하다 인증서의 -ComputerName에 사용할 값입니다(CN/SAN 일치).

주요 cmdlet 및 구문

소수의 특공대가 다음을 커버합니다. 일상 시나리오의 90%활성화/비활성화하려면:

Enable-PSRemoting    
Disable-PSRemoting

대화형 세션 1 대 1로 종료:

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1에서 다수로, 병렬성과 자격 증명을 통해:

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred

지속적인 세션 그리고 재사용:

$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s

테스트 및 WinRM 유용한:

Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https

방화벽, 네트워크 및 포트에 대한 실용적인 참고 사항

대상 컴퓨터에서 HTTP의 경우 5985/TCP를 열고 HTTPS의 경우 5986/TCP를 엽니다. 모든 중간 방화벽Windows 클라이언트에서 Enable-PSRemoting은 도메인 및 개인 프로필에 대한 규칙을 생성합니다. 공개 프로필의 경우 Set-NetFirewallRule -RemoteAddress Any(위험 수준에 따라 평가할 수 있는 값)로 범위를 수정하지 않는 한 로컬 서브넷으로 제한됩니다.

원격 명령(예: XSOAR에서)을 실행하는 SOAR/SIEM 통합을 사용하는 경우 서버에 다음이 있는지 확인하십시오. DNS 확인 호스트 연결, 5985/5986 연결, 그리고 충분한 로컬 권한이 있는 자격 증명. 경우에 따라 NTLM/기본 인증 조정이 필요할 수 있습니다(예: SSL을 사용하는 기본 환경에서 로컬 사용자 사용).

Enable-PSRemoting 매개변수(운영 요약)

-Confirm은 실행하기 전에 확인을 요청합니다. -Force 경고를 무시하다 필요한 변경 사항을 적용합니다. -SkipNetworkProfileCheck는 공용 클라이언트 네트워크(기본적으로 로컬 서브넷으로 제한됨)에서 원격 작업을 활성화합니다. -WhatIf는 변경 사항을 적용하지 않을 경우의 결과를 보여줍니다. 또한, 다른 표준 cmdlet과 마찬가지로 다음을 지원합니다. 공통 매개변수 (-Verbose, -ErrorAction 등).

"활성화"를 선택해도 HTTPS 리스너나 인증서가 생성되지 않습니다. 처음부터 종단 간 암호화와 기반 인증이 필요한 경우 인증, HTTPS 리스너를 구성하고 -ComputerName에 사용할 이름과 CN/SAN을 확인합니다.

유용한 WinRM 및 PowerShell 원격 명령

일부 필수 침대 옆 아이템 매일:

winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host 
Enter-PSSession -ComputerName host 
Enable-PSRemoting -SkipNetworkProfileCheck -Force

대규모 Windows를 관리할 때 원격 기능을 사용하면 "컴퓨터 간" 방식에서 선언적이고 안전한 방식으로 전환할 수 있습니다. 영구 세션, 강력한 인증(Kerberos/HTTPS), 제한된 엔드포인트, 그리고 진단을 위한 명확한 추적 기능을 결합하여 당신은 속도와 통제력을 얻습니다 보안이나 감사 기능을 희생하지 않고도 가능합니다. GPO 활성화를 표준화하고 특수 사례(TrustedHosts, 이중 홉, 인증서)를 완벽하게 숙지하면 일상 업무 및 사고 대응을 위한 견고한 원격 플랫폼을 구축할 수 있습니다.

보이지 않는 맬웨어
관련 기사 :
XWorm 및 NotDoor와 같은 보이지 않는 맬웨어로부터 PC를 보호하는 방법