Computer >> 컴퓨터 >  >> 체계 >> Windows Server

Enter-PSSession:대화형 셸에서 원격 명령 실행

PSSession 입력 cmdlet을 사용하면 원격 컴퓨터와 지속적인 대화형 PowerShell 세션을 설정할 수 있습니다. 명령 프롬프트에 입력하는 모든 명령은 원격 컴퓨터에서 실행됩니다. 이 기사에서는 Enter-PSSession의 주요 기능과 Windows 10/11 및 Windows Server 2022/2019/2016을 실행하는 컴퓨터를 원격으로 관리하는 데 사용할 수 있는 방법을 설명합니다.

Enter-PSSession cmdlet은 PowerShell Remoting에 의해 구동됩니다. 스택. PSRemoting은 관리용 웹 서비스를 기반으로 합니다. (WS-관리) 및 WinRM 서비스 (Windows 원격 관리). 컴퓨터 간의 트래픽은 프로토콜 수준에서 암호화됩니다(선택적으로 PSRemoting WinRM 트래픽에 대해 SSL 암호화를 활성화할 수 있음). NTLM 및 Kerberos를 비롯한 다양한 인증 방법을 사용할 수 있습니다.

간단한 경우. 원격 컴퓨터와 대화형 PowerShell 세션을 설정하려면 연결할 컴퓨터 이름(ComputerName 옵션). 원격 컴퓨터에 연결하려면 다음 명령을 실행하기만 하면 됩니다.

Enter-PSSession hq-srv01.woshub.com

Enter-PSSession:대화형 셸에서 원격 명령 실행

현재 사용자에게 원격 호스트에 연결할 수 있는 권한이 있으면 원격 컴퓨터의 대화형 셸에 연결합니다.

연결하기 전에 사용자 자격 증명을 묻는 메시지를 표시할 수 있습니다.

Enter-PsSession –ComputerName hq-srv01.woshub.com –Credentials woshub\maxbak

또는:

$creds = Get-Credential
Enter-PSSession -ComputerName hq-srv01 -Credential $creds

원격 컴퓨터의 이름은 이제 PowerShell 프롬프트 시작 부분에 대괄호로 표시됩니다([hq-srv01.woshub.com] ). 이렇게 하면 로컬 또는 원격 셸 세션에서 실행 중인지 확인할 수 있습니다.

원격으로 실행되는 모든 명령의 출력은 로컬 콘솔에 표시됩니다. hostname을 실행할 수 있습니다. 명령을 실행하고 원격 컴퓨터에서 실행 중인지 확인하십시오.

이 대화형 명령 프롬프트에서 모든 명령을 실행할 수 있습니다(권한에 따라).

예를 들어 PowerShell을 사용하여 Windows 네트워크 설정을 표시해 보겠습니다.

Get-NetIPConfiguration

원격 컴퓨터에서 DNS 설정을 변경할 수 있습니다.

Set-DNSClientServerAddress –InterfaceIndex 6 –ServerAddresses 192.168.13.4, 192.168.100.4

Enter-PSSession:대화형 셸에서 원격 명령 실행

대화형 원격 셸 세션을 종료하려면 Exit-PSSession을 실행하십시오. 또는 exit . PS 프롬프트가 일반화되고 로컬 PowerShell 콘솔로 돌아갑니다.

Enter-PSSession:대화형 셸에서 원격 명령 실행

이전에는 관리자가 주로 PsExec를 사용했습니다. 원격 Windows 컴퓨터에서 대화형 명령 프롬프트를 실행하는 도구입니다. 그러나 Enter-PSSession이 나타나면 더 이상 외부 도구를 사용할 필요가 없습니다.

Windows Server 2016/2019/2022에서 PowerShell Remoting은 기본적으로 활성화되어 있습니다(서버 관리자 -> 로컬 서버 -> 원격 관리 =활성화에서 확인할 수 있음).

Enter-PSSession:대화형 셸에서 원격 명령 실행
데스크톱 Windows 버전(Win10, Win11)에서는 PSRemoting 및 WinRM이 비활성화됩니다.
아래 명령을 사용하여 현재 컴퓨터에서 PSRemoting이 활성화되어 있는지 확인할 수 있습니다.

Get-PSSessionConfiguration

이 명령은 또한 WinRM을 통해 연결할 수 있는 사용자 및 그룹 목록을 가져오는 데 사용됩니다. PSRemoting을 사용하려면 사용자 계정이 관리자의 구성원이어야 합니다. 또는 원격 관리 사용자 그룹. 관리자가 아닌 사용자를 위해 WinRM PowerShell Remoting을 활성화하는 방법에 대해 자세히 알아볼 수 있습니다.

Enter-PSSession:대화형 셸에서 원격 명령 실행

PowerShell Remoting을 통해 로컬로 컴퓨터에 연결할 수 있는지 테스트할 수 있습니다.

Test-WSMan -ComputerName localhost

명령이 WSMan 스키마 버전을 반환하면 PS Remoting을 사용하는 컴퓨터에 대한 원격 연결이 허용됩니다.

Enter-PSSession:대화형 셸에서 원격 명령 실행

PowerShell Remoting이 비활성화되었거나 구성되지 않은 경우 다음 오류가 나타납니다.

Test-WSMan : <f:WSManFaultxmlns:f="https://schemas.microsoft.com/wbem/wsman/1/wsmanfault" Code="2150858770" Machine="srv02"><f:Message>The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".

PowerShell Remoting을 활성화하려면 다음 명령을 실행하십시오.

Enable-PSRemoting -Force

이 명령:

  • WinRM 서비스를 활성화하고 시작 유형을 자동으로 설정합니다.
  • 기본 WinRM 포트(HTTP 트래픽의 경우 TCP/5985)에 연결 지점을 만듭니다.
  • WS-Management에 대한 예외를 Windows 방화벽에 추가합니다(PSRemoting을 수동으로 구성하는 경우 PowerShell 또는 GPO를 사용하여 방화벽 규칙 추가)
  • 원격 PowerShell 세션 허용
  • WinRM 서비스를 다시 시작합니다.

WinRM 서비스가 실행 중이고 자동으로 시작되도록 설정되어 있는지 확인하십시오.

Get-Service WinRM | Select MachineName,Name,Status, StartType

Enter-PSSession:대화형 셸에서 원격 명령 실행

Enable-PSRemoting 명령은 도메인 및 개인 Windows 네트워크 프로필에 대해서만 작동합니다. 공용 네트워크의 컴퓨터에서 PSRemoting을 활성화하려면 네트워크 위치를 공용에서 개인으로 변경하거나 아래 명령을 사용하십시오.

Enable-PSRemoting -SkipNetworkProfileCheck -Force

Active Directory 도메인에서 서버와 컴퓨터의 Windows 원격 관리(PSRemoting)를 중앙에서 구성하는 가장 쉬운 방법은 그룹 정책을 사용하는 것입니다.

최신 PowerShell 버전(v6 또는 v7)은 SSH(Secure Shell 프로토콜)를 지원하여 PowerShell Remoting을 통해 원격 컴퓨터에 연결합니다. 원격 컴퓨터에서 SSH 연결 지점을 사용할 수 있어야 합니다(Windows 10에서 내장 OpenSSH 서버를 활성화하는 방법). 다음 명령을 사용하여 SSH를 통해 대화형 PSRemoting 세션을 시작할 수 있습니다.

Enter-PSSession -HostName maxbak@hq-srv01.woshub.com

또는 RSA 키를 사용하여 SSH를 통해 인증:

Enter-PSSession -HostName maxbak@hq-srv01.woshub.com:22 -KeyFilePath c:\PS\max_rsa_key

Enter-PSSession을 New-PSSession과 함께 사용할 수 있습니다. :

$s = New-PSSession -ComputerName hq-srv01.woshub.com
Enter-PSSession -Session $s

Enter-PSSession은 여러 인증 방법을 지원합니다. -Authentication 매개변수를 사용하여 원하는 것을 설정할 수 있습니다. Basic, Digest, Kerberos, CredSSP, NegotiateWithImplicitCredential, Negotiate Challenge 인증 방법이 지원됩니다.

위의 예에서는 동일한 Windows 도메인에 있는 컴퓨터 간에 대화형 Enter-PSSession 연결을 만드는 방법을 보여주었습니다(연결에 FQDN 또는 짧은 이름을 지정하는 것으로 충분하며 Kerberos 인증이 사용됨). IP 주소 또는 CNAME을 사용하여 원격 컴퓨터에 연결하려고 하면 인증되지 않습니다.

Enter-PSSession : Connecting to remote server 192.168.31.12 failed with the following error message: The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated.

Enter-PSSession:대화형 셸에서 원격 명령 실행

해당 IP 주소를 사용하여 원격 컴퓨터에 연결하려면 호스트를 신뢰할 수 있는 호스트 목록에 추가하거나(신뢰할 수 있는 호스트) WinRM용 SSL을 사용할 수 있습니다(더 안전합니다).

신뢰할 수 있는 호스트에 IP 주소를 추가하려면 다음 명령을 실행하십시오.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.13.5

와일드카드 마스크를 사용하여 신뢰할 수 있는 호스트를 추가할 수 있습니다.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.woshub.com

신뢰할 수 있는 호스트 목록을 표시하려면:

Get-Item WSMan:\localhost\Client\TrustedHosts

같은 방법으로 원격 컴퓨터의 신뢰할 수 있는 호스트 목록에 호스트를 추가할 수 있습니다.

서비스 다시 시작:

Restart-Service WinRM

IP 주소를 사용하여 원격 컴퓨터에 연결하려면 아래 명령을 실행하십시오.

Enter-PSSession -ComputerName 192.168.13.5 -Credential (Get-Credential -UserName woshub\maxbak)

Enter-PSSessionNew-PSSession cmdlet은 영구적인 일대일 원격 세션을 만들고 대부분 대화형 시나리오에서 사용됩니다. 스크립트나 작업을 자동으로 실행하거나 여러 원격 컴퓨터에서 동시에 작업을 수행하려면 Invoke-Command 명령을 사용하십시오.