Enable-PSRemoting

원격 명령을 받도록 컴퓨터를 구성합니다.

Syntax

Enable-PSRemoting
      [-Force]
      [-SkipNetworkProfileCheck]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Description

이 cmdlet은 Windows 플랫폼에서만 사용할 수 있습니다.

cmdlet은 Enable-PSRemoting WS-Management 기술을 사용하여 전송되는 PowerShell 원격 명령을 받도록 컴퓨터를 구성합니다. WS 관리 기반 PowerShell 원격은 현재 Windows 플랫폼에서만 지원됩니다.

Windows Server 플랫폼에서는 PowerShell 원격이 기본적으로 사용됩니다. 지원되는 다른 버전의 Windows에서 PowerShell 원격을 사용하도록 설정하고 원격 기능을 사용하지 않도록 설정하는 데 사용할 Enable-PSRemoting 수 있습니다.

명령을 받을 각 컴퓨터에서 이 명령을 한 번만 실행해야 합니다. 명령만 보내는 컴퓨터에서는 실행할 필요가 없습니다. 구성은 수신기가 원격 연결을 수락하기 시작하므로 필요한 경우에만 실행하는 것이 좋습니다.

컴퓨터가 공용 네트워크에 있는 경우 클라이언트 버전의 Windows에서 PowerShell 원격을 사용하도록 설정하는 것은 일반적으로 허용되지 않지만 SkipNetworkProfileCheck 매개 변수를 사용하여 이 제한을 건너뛸 수 있습니다. 자세한 내용은 SkipNetworkProfileCheck 매개 변수에 대한 설명을 참조하세요.

여러 PowerShell 설치는 단일 컴퓨터에 나란히 존재할 수 있습니다. 실행 Enable-PSRemoting 하면 cmdlet을 실행하는 특정 설치 버전에 대한 원격 엔드포인트가 구성됩니다. 따라서 PowerShell 6.2를 실행하는 동안 실행하는 Enable-PSRemoting 경우 PowerShell 6.2를 실행하는 원격 엔드포인트가 구성됩니다. PowerShell 7-preview를 실행하는 동안 실행하는 Enable-PSRemoting 경우 PowerShell 7-preview를 실행하는 원격 엔드포인트가 구성됩니다.

Enable-PSRemoting 는 필요에 따라 두 개의 원격 엔드포인트 구성을 만듭니다. 엔드포인트 구성이 이미 있는 경우 사용하도록 설정하기만 하면 됩니다. 만든 구성은 동일하지만 이름이 다릅니다. 하나는 세션을 호스트하는 PowerShell 버전에 해당하는 간단한 이름을 갖습니다. 다른 구성 이름에는 세션을 호스트하는 PowerShell 버전에 대한 자세한 정보가 포함되어 있습니다. 예를 들어 PowerShell 6.2에서 실행하는 Enable-PSRemoting 경우 PowerShell.6, PowerShell.6.2.2라는 두 개의 구성된 엔드포인트가 표시됩니다. 이렇게 하면 간단한 이름 PowerShell.6을 사용하여 최신 PowerShell 6 호스트 버전에 대한 연결을 만들 수 있습니다. 또는 더 긴 이름 PowerShell.6.2.2를 사용하여 특정 PowerShell 호스트 버전에 연결할 수 있습니다.

새로 사용하도록 설정된 원격 엔드포인트를 사용하려면 ,Enter-PSSessionNew-PSSessioncmdlet을 사용하여 원격 연결을 만들 때 ConfigurationName 매개 변수를 사용하여 Invoke-Command이름으로 지정해야 합니다. 자세한 내용은 예제 4를 참조하세요.

cmdlet은 Enable-PSRemoting 다음 작업을 수행합니다.

  • Set-WSManQuickConfig cmdlet을 실행하여 다음 작업을 수행합니다.
    • WinRM 서비스를 시작합니다.
    • WinRM 서비스의 시작 유형을 자동으로 설정합니다.
    • 모든 IP 주소에 대한 요청을 수락하는 수신기를 만듭니다.
    • WS-Management 통신에 방화벽 예외를 사용하도록 설정합니다.
    • 필요한 경우 간단하고 긴 이름 세션 엔드포인트 구성을 만듭니다.
    • 모든 세션 구성을 사용하도록 설정합니다.
    • 원격 액세스를 허용하도록 모든 세션 구성의 보안 설명자를 변경합니다.
  • WinRM 서비스를 다시 시작하여 위의 변경 내용을 적용합니다.

Windows 플랫폼에서 이 cmdlet을 실행하려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 시작합니다. 이 cmdlet은 Linux 또는 MacOS 버전의 PowerShell에서 사용할 수 없습니다.

주의

이 cmdlet은 Windows PowerShell에서 만든 원격 엔드포인트 구성에 영향을 주지 않습니다. PowerShell 버전 6 이상에서 만든 엔드포인트에만 영향을 줍니다. Windows PowerShell에서 호스트하는 PowerShell 원격 엔드포인트를 사용하거나 사용하지 않도록 설정하려면 Windows PowerShell 세션 내에서 cmdlet을 실행 Enable-PSRemoting 합니다.

예제

예제 1: 원격 명령을 받도록 컴퓨터 구성

이 명령은 원격 명령을 받도록 컴퓨터를 구성합니다.

Enable-PSRemoting

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

예제 2: 확인 프롬프트 없이 원격 명령을 받도록 컴퓨터 구성

이 명령은 원격 명령을 받도록 컴퓨터를 구성합니다. Force 매개 변수는 사용자 프롬프트를 표시하지 않습니다.

Enable-PSRemoting -Force

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

예제 3: 클라이언트에서 원격 액세스 허용

이 예제에서는 Windows 운영 체제의 클라이언트 버전에서 공용 네트워크에서 원격 액세스를 허용하는 방법을 보여 줍니다. 방화벽 규칙의 이름은 Windows 버전에 따라 다를 수 있습니다. 규칙 목록을 확인하는 데 사용합니다 Get-NetFirewallRule . 방화벽 규칙을 사용하도록 설정하기 전에 규칙의 보안 설정을 확인하여 구성이 사용자 환경에 적합한지 확인합니다.

Get-NetFirewallRule -Name 'WINRM*' | Select-Object -Property Name

Name
----
WINRM-HTTP-In-TCP-NoScope
WINRM-HTTP-In-TCP
WINRM-HTTP-Compat-In-TCP-NoScope
WINRM-HTTP-Compat-In-TCP

Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any

기본적으로 Enable-PSRemoting 프라이빗 및 할기본 네트워크에서 원격 액세스를 허용하는 네트워크 규칙을 만듭니다. 이 명령은 SkipNetworkProfileCheck 매개 변수를 사용하여 동일한 로컬 서브넷의 공용 네트워크에서 원격 액세스를 허용합니다. 이 명령은 확인 메시지를 표시하지 않는 Force 매개 변수를 지정합니다.

SkipNetworkProfileCheck 매개 변수는 기본적으로 동일한 로컬 서브넷의 공용 네트워크에서 원격 액세스를 허용하는 Windows 운영 체제의 서버 버전에 영향을 주지 않습니다.

NetSecurity 모듈의 cmdlet은 Set-NetFirewallRule 모든 원격 위치에서 공용 네트워크에서 원격 액세스를 허용하는 방화벽 규칙을 추가합니다. 여기에는 여러 서브넷의 위치가 포함됩니다.

예제 4: 새로 사용하도록 설정된 엔드포인트 구성에 대한 원격 세션 만들기

이 예제에서는 컴퓨터에서 PowerShell 원격을 사용하도록 설정하고, 구성된 엔드포인트 이름을 찾고, 엔드포인트 중 하나에 대한 원격 세션을 만드는 방법을 보여 줍니다.

첫 번째 명령은 컴퓨터에서 PowerShell 원격을 사용하도록 설정합니다.

두 번째 명령은 엔드포인트 구성을 나열합니다.

세 번째 명령은 PowerShell.7 엔드포인트를 이름으로 지정하여 동일한 컴퓨터에 대한 원격 PowerShell 세션을 만듭니다. 원격 세션은 최신 PowerShell 7 버전(7.3.0)으로 호스트됩니다.

마지막 명령은 원격 세션의 $PSVersionTable 변수에 액세스하여 세션을 호스팅하는 PowerShell 버전을 표시합니다.

Enable-PSRemoting -Force

Get-PSSessionConfiguration

$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7

Invoke-Command -Session $session -ScriptBlock { $PSVersionTable }

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

Name          : PowerShell.7
PSVersion     : 7.3
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed,
                BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name          : PowerShell.7.3.0
PSVersion     : 7.3
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed,
                BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name                           Value
----                           -----
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSEdition                      Core
PSRemotingProtocolVersion      2.3
Platform                       Win32NT
SerializationVersion           1.1.0.1
GitCommitId                    6.2.2
WSManStackVersion              3.0
PSVersion                      6.2.2
OS                             Microsoft Windows 10.0.18363

참고 항목

방화벽 규칙의 이름은 Windows 버전에 따라 다를 수 있습니다. cmdlet을 Get-NetFirewallRule 사용하여 시스템의 규칙 이름을 나열합니다.

매개 변수

-Confirm

cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

사용자 확인을 요청하지 않고 명령을 강제 실행합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipNetworkProfileCheck

이 cmdlet은 컴퓨터가 공용 네트워크에 있을 때 Windows 운영 체제의 클라이언트 버전에서 원격을 사용하도록 설정됨을 나타냅니다. 이 매개 변수는 동일한 로컬 서브넷에 있는 컴퓨터에서만 원격 액세스를 허용하는 공용 네트워크에 대한 방화벽 규칙을 사용하도록 설정합니다.

이 매개 변수는 기본적으로 공용 네트워크에 대한 로컬 서브넷 방화벽 규칙이 있는 Windows 운영 체제의 서버 버전에 영향을 주지 않습니다. 서버 버전 Enable-PSRemoting 에서 로컬 서브넷 방화벽 규칙을 사용하지 않도록 설정한 경우 이 매개 변수의 값에 관계없이 다시 사용하도록 설정합니다.

로컬 서브넷 제한을 제거하고 공용 네트워크의 모든 위치에서 원격 액세스를 사용하도록 설정하려면 NetSecurity 모듈의 Set-NetFirewallRule cmdlet을 사용합니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

None

개체를 이 cmdlet으로 파이프할 수 없습니다.

출력

String

이 cmdlet은 결과를 설명하는 문자열을 반환합니다.

참고

이 cmdlet은 Windows 플랫폼에서만 사용할 수 있습니다.

Windows 운영 체제 Enable-PSRemoting 의 서버 버전에서 원격 액세스를 허용하는 프라이빗 및 do기본 네트워크에 대한 방화벽 규칙을 만들고 동일한 로컬 서브넷의 컴퓨터에서만 원격 액세스를 허용하는 공용 네트워크에 대한 방화벽 규칙을 만듭니다.

Windows 운영 체제 Enable-PSRemoting 의 클라이언트 버전에서 무제한 원격 액세스를 허용하는 프라이빗 및 do기본 네트워크에 대한 방화벽 규칙을 만듭니다. 동일한 로컬 서브넷에서 원격 액세스를 허용하는 공용 네트워크에 대한 방화벽 규칙을 만들려면 SkipNetworkProfileCheck 매개 변수를 사용합니다.

Windows 운영 체제의 클라이언트 또는 서버 버전에서 로컬 서브넷 제한을 제거하고 원격 액세스를 허용하는 공용 네트워크에 대한 방화벽 규칙을 만들려면 NetSecurity 모듈의 cmdlet을 사용하여 Set-NetFirewallRule 다음 명령을 실행합니다. Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Enable-PSRemoting 는 모든 세션 구성의 Enabled 속성 값을 .로 설정하여 모든 세션 구성을 사용하도록 설정합니다 $True.

Enable-PSRemoting는 Deny_AllNetwork_Deny_All 설정을 제거합니다. 로컬 사용을 위해 예약된 세션 구성에 대한 원격 액세스를 제공합니다.