다음을 통해 공유


about_Remote_Troubleshooting

간단한 설명

PowerShell에서 원격 작업의 문제를 해결하는 방법을 설명합니다.

자세한 설명

PowerShell 원격을 사용하기 전에 구성 및 기본 사용에 대한 지침은 about_Remoteabout_Remote_Requirements 참조하세요.

드라이브에서 로컬 컴퓨터에 대한 설정을 보거나 변경할 수 있는 WSMan: 관리자 권한이 있어야 합니다. 여기에는 세션 구성, 신뢰할 수 있는 호스트, 포트 또는 수신기에 대한 변경 내용이 포함됩니다.

관리자 권한으로 실행 옵션을 사용하여 PowerShell을 실행해야 합니다.

관리자 권한으로 실행하는 방법

오류의 경우:

오류: 액세스가 거부되었습니다. 관리자 권한 프로세스에서 이 cmdlet을 실행해야 합니다.

관리자 권한으로 실행 옵션을 사용하여 Windows PowerShell을 시작하려면 시작 메뉴에서 PowerShell 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택합니다.

원격을 사용하도록 설정하는 방법

오류의 경우:

  • 오류: 액세스가 거부됨
  • 오류: 원격 호스트에 대한 연결이 거부되었습니다. WS-Management 서비스가 원격 호스트에서 실행 중이고 올바른 포트 및 HTTP URL에 대한 요청을 수신 대기하도록 구성되었는지 확인합니다.

원격 명령을 받으려면 컴퓨터에서 PowerShell 원격을 사용하도록 설정해야 합니다. Windows PowerShell 원격은 Windows Server 2012 및 최신 버전의 Windows Server에서 기본적으로 사용하도록 설정됩니다. 원격 기능을 사용하지 않도록 설정한 경우 다시 사용하도록 설정할 Enable-PSRemoting 수 있습니다. 자세한 내용은 Enable-PSRemoting을 참조 하세요.

기업에서 원격을 사용하도록 설정하는 방법

오류의 경우:

  • 오류: 액세스가 거부됨
  • 오류: 원격 호스트에 대한 연결이 거부되었습니다. WS-Management 서비스가 원격 호스트에서 실행 중이고 올바른 포트 및 HTTP URL에 대한 요청을 수신 대기하도록 구성되었는지 확인합니다.

단일 컴퓨터가 원격 PowerShell 명령을 수신하고 연결을 수락할 수 있도록 하려면 cmdlet을 Enable-PSRemoting 사용합니다.

엔터프라이즈의 여러 컴퓨터에 원격을 사용하도록 설정하려면 다음과 같은 크기 조정된 옵션을 사용할 수 있습니다.

  • 수신기 그룹 정책의 자동 구성 허용을 사용하도록 설정하여 원격에 대한 수신기를 구성합니다.
  • Windows 방화벽 구성 및 사용 : 로컬 포트 예외 그룹 정책 허용
  • WinRM 서비스의 Automatic 시작 유형을 설정하고 서비스를 시작합니다.

그룹 정책을 사용하여 수신기를 사용하도록 설정하는 방법

오류의 경우:

  • 오류: 액세스가 거부됨
  • 오류: 원격 호스트에 대한 연결이 거부되었습니다. WS-Management 서비스가 원격 호스트에서 실행 중이고 올바른 포트 및 HTTP URL에 대한 요청을 수신 대기하도록 구성되었는지 확인합니다.

수신기 정책의 자동 구성 허용을 사용하도록 설정하여 도메인의 모든 컴퓨터에 대해 수신기를 구성합니다.

정책은 다음 그룹 정책 경로에 있습니다.

Computer Configuration\Administrative Templates\Windows Components
    \Windows Remote Management (WinRM)\WinRM service

정책을 사용하도록 설정하고 IPv4 및 IPv6 필터를 지정합니다. 와일드카드(*)가 허용됩니다.

공용 네트워크에서 원격을 사용하도록 설정하는 방법

Enable-PSRemoting 는 로컬 네트워크가 공용이고 SkipNetworkProfileCheck 매개 변수가 명령에 사용되지 않을 때 이 오류를 반환합니다.

오류: 방화벽의 상태를 확인할 수 없습니다.

Windows 서버 버전에서는 Enable-PSRemoting 모든 네트워크 프로필에서 성공합니다. 프라이빗 및 도메인("홈" 및 "회사") 네트워크에 대한 원격 액세스를 허용하는 방화벽 규칙을 만듭니다. 공용 네트워크의 경우 동일한 로컬 서브넷에서 원격 액세스를 허용하는 방화벽 규칙을 만듭니다.

Windows의 클라이언트 버전에서는 Enable-PSRemoting 프라이빗 및 도메인 네트워크에서 성공합니다. 기본적으로 공용 네트워크에서는 실패하지만 SkipNetworkProfileCheck 매개 변수 Enable-PSRemoting 를 사용하는 경우 성공하고 동일한 로컬 서브넷의 트래픽을 허용하는 방화벽 규칙을 만듭니다.

참고 항목

Windows PowerShell 2.0에서 서버 버전의 Windows를 실행하는 컴퓨터에서 프라이빗, Enable-PSRemoting 도메인 및 공용 네트워크에서 원격 액세스를 허용하는 방화벽 규칙을 만듭니다. 클라이언트 버전의 Windows Enable-PSRemoting 를 실행하는 컴퓨터에서 프라이빗 및 도메인 네트워크에서만 원격 액세스를 허용하는 방화벽 규칙을 만듭니다.

공용 네트워크에서 로컬 서브넷 제한을 제거하고 모든 위치에서 원격 액세스를 허용하려면 다음 명령을 실행합니다.

Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Set-NetFirewallRule cmdlet은 NetSecurity 모듈에서 내보냅니다.

참고 항목

방화벽 규칙의 이름은 Windows 버전에 따라 다를 수 있습니다. 규칙 목록을 확인하는 데 사용합니다 Get-NetFirewallRule . 방화벽 규칙을 사용하도록 설정하기 전에 규칙의 보안 설정을 확인하여 구성이 사용자 환경에 적합한지 확인합니다.

그룹 정책을 사용하여 방화벽 예외를 사용하도록 설정하는 방법

오류의 경우:

  • 오류: 액세스가 거부됨
  • 오류: 원격 호스트에 대한 연결이 거부되었습니다. WS-Management 서비스가 원격 호스트에서 실행 중이고 올바른 포트 및 HTTP URL에 대한 요청을 수신 대기하도록 구성되었는지 확인합니다.

Windows 방화벽 사용: 도메인의 모든 컴퓨터에서 방화벽 예외 를 사용하도록 로컬 포트 예외 정책을 허용합니다.

정책은 다음 그룹 정책 경로에 있습니다.

Computer Configuration\Administrative Templates\Network
    \Network Connections\Windows Firewall\Domain Profile

이 정책을 사용하면 관리자 그룹의 구성원이 WinRM(Windows 원격 관리) 서비스에 대한 방화벽 예외를 만들 수 있습니다.

정책 구성이 올바르지 않으면 다음 오류가 발생할 수 있습니다.

클라이언트가 요청에 지정된 대상에 연결할 수 없습니다. 대상의 서비스가 실행 중이고 요청을 수락하고 있는지 확인합니다.

정책의 구성 오류로 인해 ListeningOn 속성에 대한 값이 비어 있습니다. 다음 명령을 사용하여 값을 확인합니다.

Get-WSManInstance winrm/config/listener -Enumerate
cfg                   : http://schemas.microsoft.com/wbem/wsman/1/config/listener
xsi                   : http://www.w3.org/2001/XMLSchema-instance
Source                : GPO
lang                  : en-US
Address               : *
Transport             : HTTP
Port                  : 5985
Hostname              :
Enabled               : true
URLPrefix             : wsman
CertificateThumbprint :
ListeningOn           : {}

WinRM 서비스의 시작 유형을 설정하는 방법

오류의 경우:

오류: 액세스가 거부됨

PowerShell 원격은 WinRM(Windows 원격 관리) 서비스에 따라 달라집니다. 원격 명령을 지원하려면 서비스를 실행해야 합니다.

서버 버전의 Windows에서 WinRM 서비스 시작 유형은 Automatic. 그러나 클라이언트 버전의 Windows에서는 WinRM 서비스가 기본적으로 사용하지 않도록 설정됩니다.

다음 예제를 사용하여 WinRM 서비스의 시작 유형을 서비스로 Automatic 설정하고 시작합니다. ComputerName 매개 변수는 여러 값을 허용합니다.

$invokeCimMethodSplat = @{
    ComputerName = 'Server01', 'Server02'
    Query = 'Select * From Win32_Service Where Name = "WinRM"'
    MethodName = 'ChangeStartMode'
    Arguments = @{StartMode  = 'Automatic'}
}
Invoke-CimMethod @invokeCimMethodSplat

기본 세션 구성을 다시 만드는 방법

오류의 경우:

오류: 액세스가 거부됨

사용하는 Enable-PSRemoting경우 로컬 컴퓨터에 기본 세션 구성을 만듭니다. 원격 명령에 ConfigurationName 매개 변수가 포함되지 않을 때마다 원격 사용자는 이러한 세션 구성을 사용합니다.

컴퓨터의 기본 구성이 등록 취소되거나 삭제된 경우 cmdlet을 Enable-PSRemoting 사용하여 다시 만듭니다. 이 cmdlet을 반복적으로 사용할 수 있습니다. 기능이 이미 구성된 경우 오류가 생성되지 않습니다.

기본 세션 구성을 변경하고 원래 세션 구성을 복원하려는 경우 구성을 삭제하고 다시 만들 수 있습니다.

cmdlet을 Unregister-PSSessionConfiguration 사용하여 변경된 세션 구성을 삭제합니다. 원래 세션 구성을 복원하는 데 사용합니다 Enable-PSRemoting . Enable-PSRemoting 는 기존 세션 구성을 변경하지 않습니다.

참고 항목

기본 세션 구성을 복원하는 경우 Enable-PSRemoting 구성에 대한 명시적 보안 설명자를 만들지 않습니다. 대신 구성은 기본적으로 안전한 RootSDDL보안 설명자를 상속합니다.

RootSDDL 보안 설명자를 보려면 다음을 입력합니다.

Get-Item wsman:\localhost\Service\RootSDDL

RootSDDL변경하려면 드라이브의 Set-Item cmdlet을 WSMan: 사용합니다. 세션 구성의 보안 설명자를 변경하려면 SecurityDescriptorSDDL 또는 ShowSecurityDescriptorUI 매개 변수와 함께 cmdlet을 사용합니다Set-PSSessionConfiguration.

드라이브에 대한 WSMan: 자세한 내용은 about_WSMan_Provider 참조하세요.

관리자 자격 증명을 제공하는 방법

오류의 경우:

오류: 액세스가 거부됨

기본 원격 세션 엔드포인트에 연결하는 Administrators 그룹의 구성원이어야 합니다. 또는 cmdlet의 Enter-PSSession New-PSSessionInvoke-Command 자격 증명 매개 변수를 사용하여 대체 자격 증명을 사용하여 원격 엔드포인트에 연결할 수 있습니다.

다음 예제에서는 관리 사용자에 대 한 자격 증명을 제공 하는 방법을 보여 있습니다.

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

자격 증명 매개 변수에 대한 자세한 내용은 New-PSSession, Enter-PSSession 또는 Invoke-Command에 대한 도움말을 참조하세요.

관리자가 아닌 사용자에 대해 원격을 사용하도록 설정하는 방법

오류의 경우:

오류: 액세스가 거부됨

기본적으로 컴퓨터의 Administrators 그룹 구성원만 기본 세션 구성을 사용할 수 있는 권한이 있습니다. 따라서 Administrators 그룹의 구성원만 원격으로 컴퓨터에 연결할 수 있습니다.

다른 사용자가 로컬 컴퓨터에 연결할 수 있도록 하려면 사용자에게 로컬 컴퓨터의 기본 세션 구성에 대한 실행 권한을 부여합니다.

다음 예제에서는 로컬 컴퓨터에서 기본 Microsoft.PowerShell 세션 구성의 보안 설명자를 변경할 수 있는 속성 시트를 엽니다.

Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI

자세한 내용은 about_Session_Configurations 참조하세요.

다른 도메인의 관리자에게 원격을 사용하도록 설정하는 방법

오류의 경우:

오류: 액세스가 거부됨

다른 도메인의 사용자가 로컬 컴퓨터의 Administrators 그룹의 구성원인 경우 사용자는 관리자 권한으로 원격으로 로컬 컴퓨터에 연결할 수 없습니다. 기본적으로 다른 도메인의 원격 연결은 표준 사용자 권한 토큰만 사용하여 실행됩니다.

LocalAccountTokenFilterPolicy 레지스트리 항목을 사용하여 기본 동작을 변경하고 관리자 그룹의 구성원인 원격 사용자가 관리자 권한으로 실행되도록 허용할 수 있습니다.

주의

LocalAccountTokenFilterPolicy 항목은 영향을 받는 모든 컴퓨터의 모든 사용자에 대해 UAC(사용자 계정 제어) 원격 제한을 사용하지 않도록 설정합니다. 정책을 변경하기 전에 이 설정의 의미를 신중하게 고려합니다.

다음 명령을 사용하여 LocalAccountTokenFilterPolicy 레지스트리 값을 1로 설정합니다.

$newItemPropertySplat = @{
  Name = 'LocalAccountTokenFilterPolicy'
  Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
  PropertyType = 'DWord'
  Value = 1
}
New-ItemProperty @newItemPropertySplat

원격 명령에서 IP 주소를 사용하는 방법

오류의 경우:

오류: WinRM 클라이언트가 요청을 처리할 수 없습니다. 인증 체계가 Kerberos와 다르거나 클라이언트 컴퓨터가 도메인에 조인되지 않은 경우 HTTPS 전송을 사용하거나 대상 컴퓨터를 TrustedHosts 구성 설정에 추가해야 합니다.

Invoke-Command cmdlet의 Enter-PSSession New-PSSessionComputerName 매개 변수는 IP 주소를 유효한 값으로 허용합니다. 그러나 Kerberos 인증은 IP 주소를 지원하지 않기 때문입니다. IP 주소를 지정하면 NTLM 인증이 사용됩니다.

NTLM 인증을 지원하려면 다음 요구 사항을 충족해야 합니다.

  • HTTPS 전송을 위해 컴퓨터를 구성하거나 원격 컴퓨터의 IP 주소를 로컬 컴퓨터 의 TrustedHosts 목록에 추가합니다.
  • 모든 원격 명령에서 자격 증명 매개 변수를 사용합니다. 현재 사용자로 연결하는 경우에도 필요합니다.

작업 그룹 기반 컴퓨터에서 원격으로 연결하는 방법

오류 발생

오류: WinRM 클라이언트가 요청을 처리할 수 없습니다. 인증 체계가 Kerberos와 다르거나 클라이언트 컴퓨터가 도메인에 조인되지 않은 경우 HTTPS 전송을 사용하거나 대상 컴퓨터를 TrustedHosts 구성 설정에 추가해야 합니다.

로컬 컴퓨터가 도메인에 없는 경우 다음 요구 사항을 충족해야 합니다.

  • HTTPS 전송을 위해 컴퓨터를 구성하거나 원격 컴퓨터의 IP 주소를 로컬 컴퓨터 의 TrustedHosts 목록에 추가합니다.
  • 암호가 작업 그룹 기반 컴퓨터에 설정되어 있는지 확인합니다. 암호가 설정되지 않았거나 암호 값이 비어 있으면 원격 명령을 실행할 수 없습니다.
  • 모든 원격 명령에서 자격 증명 매개 변수를 사용합니다. 현재 사용자로 연결하는 경우에도 필요합니다.

신뢰할 수 있는 호스트 목록에 컴퓨터를 추가하는 방법

TrustedHosts 항목에는 컴퓨터 이름, IP 주소 및 정규화된 도메인 이름의 쉼표로 구분된 목록이 포함될 수 있습니다. 와일드카드가 허용됩니다.

신뢰할 수 있는 호스트 목록을 보거나 변경하려면 드라이브를 사용합니다 WSMan: . TrustedHost 항목이 노드에 있습니다WSMan:\localhost\Client. 컴퓨터의 Administrators 그룹 구성원만 컴퓨터에서 신뢰할 수 있는 호스트 목록을 변경할 수 있는 권한이 있습니다.

주의

TrustedHosts 항목에 대해 설정한 값은 컴퓨터의 모든 사용자에게 영향을 줍니다.

신뢰할 수 있는 호스트 목록을 보려면 다음 명령을 사용합니다.

Get-Item wsman:\localhost\Client\TrustedHosts

다음 예제에서는 와일드카드 문자(*)를 사용하여 신뢰할 수 있는 호스트 목록에 모든 컴퓨터를 추가합니다.

Set-Item wsman:localhost\client\trustedhosts -Value *

와일드카드 문자(*)를 사용하여 특정 도메인의 모든 컴퓨터를 신뢰할 수 있는 호스트 목록에 추가할 수도 있습니다. 예를 들어 다음 명령은 Fabrikam 도메인의 모든 컴퓨터를 추가합니다.

Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com

다음은 신뢰할 수 있는 호스트 목록을 단일 컴퓨터로 설정하는 예제입니다.

$server = 'Server01.Domain01.Fabrikam.com'
Set-Item wsman:\localhost\Client\TrustedHosts -Value $server

신뢰할 수 있는 호스트의 기존 목록에 컴퓨터 이름을 추가하려면 먼저 현재 값을 변수에 저장합니다. 그런 다음 현재 값과 새 값을 포함하는 쉼표로 구분된 목록을 포함하는 문자열로 값을 설정합니다.

다음 예제에서는 신뢰할 수 있는 호스트의 기존 목록에 Server01을 추가합니다.

$newServer = 'Server01.Domain01.Fabrikam.com'
$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).Value
Set-Item wsman:\localhost\Client\TrustedHosts -Value "$curValue, $newServer"

특정 컴퓨터의 IP 주소를 신뢰할 수 있는 호스트 목록에 추가하려면 다음 명령 형식을 사용합니다.

Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address>

예시:

Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0

원격 컴퓨터의 TrustedHosts 목록에 컴퓨터를 추가하려면 연결을 WSMan: 사용하여 Connect-WSMan 컴퓨터를 추가하는 데 사용하는 Set-Item 원격 컴퓨터를 구동합니다.

자세한 내용은 Connect-WSMan에 대한 도움말을 참조하세요.

대체 포트에서 원격을 구성하는 방법

오류의 경우:

오류: 지정된 원격 호스트에 대한 연결이 거부되었습니다. WS-Management 서비스가 원격 호스트에서 실행 중이고 올바른 포트 및 HTTP URL에 대한 요청을 수신 대기하도록 구성되었는지 확인합니다.

PowerShell 원격은 기본적으로 HTTP 전송에 포트 80을 사용합니다. 기본 포트는 사용자가 원격 명령에서 ConnectionURI 또는 포트 매개 변수를 지정하지 않을 때마다 사용됩니다.

cmdlet을 사용하여 Set-Item 수신기 리프 노드의 포트 값을 변경합니다.

예를 들어 다음 명령은 기본 포트를 8080으로 변경합니다.

Set-Item wsman:\localhost\listener\listener*\port -Value 8080

프록시 서버를 사용하여 원격을 구성하는 방법

오류의 경우:

오류: 클라이언트가 요청에 지정된 대상에 연결할 수 없습니다. 대상의 서비스가 실행 중이고 요청을 수락하고 있는지 확인합니다.

PowerShell 원격은 HTTP 프로토콜을 사용하므로 HTTP 프록시 설정의 영향을 받습니다. 프록시 서버가 있는 엔터프라이즈에서는 사용자가 PowerShell 원격 컴퓨터에 직접 액세스할 수 없습니다.

이 문제를 해결하려면 원격 명령에서 프록시 설정 옵션을 사용합니다.

  • cmdlet의 ProxyAccessType, ProxyAuthenticationProxyCredential 매개 변수를 사용하여 엔터프라이즈에 New-PSSessionOption 대한 프록시 설정을 사용하여 PSSessionOption 개체를 포함하는 변수를 만듭니다.
  • PSSessionOption 개체를 포함하는 변수를 사용하거나 명령 Enter-PSSessionInvoke-Command 의 SessionOption 매개 변수를 위트합니다New-PSSession.
$newPSSessionOptionSplat = @{
    ProxyAccessType = 'IEConfig'
    ProxyAuthentication = 'Negotiate'
    ProxyCredential = 'Domain01\User01'
}
$SessionOption = New-PSSessionOption @newPSSessionOptionSplat

$newPSSessionSplat = @{
    ConnectionUri = 'https://www.fabrikam.com'
    SessionOption = $SessionOption
}
New-PSSession @newPSSessionSplat

cmdlet에 New-PSSessionOption 대한 자세한 내용은 New-PSSessionOption을 참조하세요.

현재 세션의 모든 원격 명령에 대해 이러한 옵션을 설정하려면 기본 설정 변수를 만든 PSSessionOption 개체로 설정합니다$PSSessionOption. 자세한 내용은 about_Preference_Variables 참조하세요.

로컬 컴퓨터의 모든 PowerShell 세션에서 모든 원격 명령에 대해 이러한 옵션을 설정하려면 PowerShell 프로필에 기본 설정 변수를 추가 $PSSessionOption 합니다. PowerShell 프로필에 대한 자세한 내용은 about_Profiles 참조하세요.

64비트 컴퓨터에서 32비트 세션을 검색하는 방법

오류의 경우:

오류: 용어 <도구 이름이> cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다. 이름의 철자를 확인하거나 경로가 포함된 경우 경로가 올바른지 확인하고 다시 시도합니다.

원격 컴퓨터가 64비트 버전의 Windows를 실행하고 있고 원격 명령이 Microsoft.PowerShell32와 같은 32비트 세션 구성을 사용하는 경우 WinRM은 WOW64 프로세스를 로드합니다. Windows는 모든 참조를 디렉터리로 $env:Windir\System32 $env:Windir\SysWOW64 자동으로 리디렉션합니다.

따라서 디렉터리에 해당 항목이 없는 디렉터리에서 SysWow64 실행 중인 도구를 System32 찾을 수 없습니다.

세션에서 사용되는 프로세서 아키텍처를 찾으려면 PROCESSOR_ARCHITECTURE 환경 변수의 값을 사용합니다.

$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
Invoke-Command -Session $s {$env:PROCESSOR_ARCHITECTURE}
x86

자세한 내용은 about_Session_Configurations 참조하세요.

정책 및 기본 설정 문제 해결

이 섹션에서는 로컬 및 원격 컴퓨터에서 설정된 정책 및 기본 설정과 관련된 원격 문제에 대해 설명합니다.

Import-PSSession 및 Import-Module에 대한 실행 정책을 변경하는 방법

오류의 경우:

오류: 가져오기-모듈: 이 시스템에서 스크립트 실행을 사용할 수 없으므로 파일 <파일 이름을> 로드할 수 없습니다.

Export-PSSession cmdlet은 Import-PSSession 서명되지 않은 스크립트 파일 및 서식 파일이 포함된 모듈을 만듭니다.

이러한 cmdlet에서 만든 모듈을 가져오려면 현재 세션의 실행 정책이 될 Restricted 수 없습니다.AllSigned 자세한 내용은 about_Execution_Policies를 참조하세요.

로컬 컴퓨터에 대한 실행 정책을 변경하지 않고 모듈을 가져오려면 Scope 매개 변수 Set-ExecutionPolicy 를 사용하여 단일 프로세스에 대해 덜 제한적인 실행 정책을 설정합니다.

예를 들어 다음 예제에서는 현재 프로세스에 대한 실행 정책을 RemoteSigned 설정합니다. 변경 내용은 현재 프로세스에만 영향을 줍니다.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

ExecutionPolicy 매개 변수 PowerShell.exe사용하여 덜 제한적인 실행 정책으로 단일 세션을 시작할 수도 있습니다.

pwsh.exe -ExecutionPolicy RemoteSigned

할당량을 설정하고 변경하는 방법

할당량을 사용하여 로컬 컴퓨터와 원격 컴퓨터의 과도한 리소스 사용(실수로 인한 리소스 사용과 악의적인 컴퓨터)을 보호할 수 있습니다. 할당량이 명령과 충돌하면 PowerShell에서 다음 오류가 생성됩니다.

오류: 원격 클라이언트에서 받은 총 데이터가 허용되는 최대값을 초과했습니다.

WSMan 공급자에는 다음과 같은 할당량 설정이 있습니다.

  • 노드의 MaxEnvelopeSizeKB 및 MaxProviderRequests 설정 WSMan:<ComputerName>노드의 MaxConcurrentOperations, MaxConcurrentOperationsPerUserMaxConnections 설정 WSMan:<ComputerName>\Service 입니다.
  • cmdlet의 MaximumReceivedDataSizePerCommandMaximumReceivedObjectSize 매개 변수 New-PSSessionOption$PSSessionOption 기본 설정 변수를 사용하여 로컬 컴퓨터를 보호할 수 있습니다.
  • 원격 컴퓨터를 보호하려면 cmdlet의 MaximumReceivedDataSizePerCommandMB 및 MaximumReceivedObjectSizeMB 매개 변수 Register-PSSessionConfiguration 를 사용하여 세션 구성에 제한을 추가합니다.

오류를 해결하려면 할당량을 준수하도록 원격 명령을 변경하거나 할당량을 늘려 명령이 완료되도록 합니다.

예를 들어 다음 명령은 원격 컴퓨터의 Microsoft.PowerShell 세션 구성에서 개체 크기 할당량을 10MB(기본값)에서 11MB로 증가합니다.

$setPSSessionConfigurationSplat = @{
    Name = 'Microsoft.PowerShell'
    MaximumReceivedObjectSizeMB = 11
    Force = $true
}
Set-PSSessionConfiguration @setPSSessionConfigurationSplat

WS-Management 할당량에 대한 자세한 내용은 about_WSMan_Provider 참조하세요.

시간 제한 오류를 해결하는 방법

시간 제한을 사용하여 로컬 컴퓨터와 원격 컴퓨터의 과도한 리소스 사용(우발적 및 악의적인 사용)을 보호할 수 있습니다. 로컬 컴퓨터와 원격 컴퓨터 모두에서 시간 제한이 설정되면 PowerShell은 가장 짧은 시간 제한 설정을 사용합니다.

시간 제한 값이 작업을 완료할 수 없으면 PowerShell은 작업을 종료하고 다음 오류를 생성합니다.

오류: WS-Management 서비스는 OperationTimeout에 지정된 시간 내에 작업을 완료할 수 없습니다.

WSMan 공급자에는 다음과 같은 시간 제한 설정이 있습니다.

  • 노드의 MaxTimeoutMs 설정 WSMan:<ComputerName> 및 노드의 EnumerationTimeoutMsMaxPacketRetrievalTimeSeconds 설정 WSMan:<ComputerName>\Service 입니다.
  • cmdlet 및 $PSSessionOption 기본 설정 변수의 CancelTimeout, IdleTimeout, OpenTimeoutOperationTimeout 매개 변수 New-PSSessionOption 를 사용하여 로컬 컴퓨터를 보호할 수 있습니다.
  • 세션에 대한 세션 구성에서 프로그래밍 방식으로 시간 제한 값을 설정하여 원격 컴퓨터를 보호할 수도 있습니다.

오류를 해결하려면 시간 제한 간격 내에 완료되도록 명령을 변경하거나 시간 제한 간격을 늘려 명령이 완료될 수 있도록 합니다.

다음 예제에서는 OperationTimeout 값이 4분(MS)인 세션 옵션을 만든 다음, 세션 옵션을 사용하여 원격 세션을 만듭니다.

$pso = New-PSSessionOption -OperationTimeout 240000
New-PSSession -ComputerName Server01 -SessionOption $pso

WS-Management 시간 제한에 대한 자세한 내용은 about_WSMan_Provider 참조하세요.

응답하지 않는 명령을 중단하는 방법

사용자 인터페이스가 있는 프로그램, 입력을 요청하는 콘솔 애플리케이션, Win32 콘솔 API를 사용하는 콘솔 애플리케이션과 같은 일부 네이티브 프로그램은 PowerShell 원격 호스트에서 제대로 작동하지 않습니다.

이러한 프로그램을 사용하면 출력 없음, 부분 출력 또는 완료되지 않은 원격 명령과 같은 예기치 않은 동작이 표시될 수 있습니다.

응답하지 않는 프로그램을 종료하려면 Ctrl+c를 입력합니다. Get-Error 로컬 호스트 및 원격 세션에서 보고되었을 수 있는 오류를 볼 수 있습니다.

작업 실패에서 복구하는 방법

작업이 완료되기 전에 종료될 때 다음 오류가 반환됩니다.

오류: 스레드 종료 또는 애플리케이션 요청으로 인해 I/O 작업이 중단되었습니다.

일반적으로 다른 WinRM 작업이 진행되는 동안 WinRM 서비스가 중지되거나 다시 시작될 때 발생합니다.

이 문제를 해결하려면 WinRM 서비스가 실행 중인지 확인하고 명령을 다시 시도합니다.

  1. 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 시작합니다.

  2. 다음 명령을 실행합니다.

    Start-Service WinRM

  3. 오류를 생성한 명령을 다시 실행합니다.

Linux 및 macOS 제한 사항

PowerShell 원격은 SSH를 통해 원격을 사용하는 Linux 및 macOS입니다. 자세한 내용은 SSH를 통해 PowerShell 원격을 참조하세요.

참고 항목