about_Remote_Troubleshooting

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

항목

about_Remote_Troubleshooting

간단한 설명

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

자세한 설명

이 섹션에서는 WS-Management 기술을 기반으로 하는 Windows PowerShell의 원격 기능을 사용할 때 발생할 수 있는 일부 문제를 설명하고 이들 문제의 해결 방법을 제안합니다.

Windows PowerShell 원격을 사용하기 전에 구성 및 기본 사용에 대한 지침으로 about_Remote 및 about_Remote_Requirements를 참조하세요. 또한 매개 변수 설명을 포함하여 각 원격 cmdlet에 대한 도움말 항목에는 문제를 방지하는 데 도움되도록 디자인된 유용한 정보가 있습니다.

이 항목의 업데이트된 버전 및 기타 Windows PowerShell 도움말 항목은 Update-Help cmdlet을 사용하여 다운로드할 수 있고 Microsoft TechNet Library(https://technet.microsoft.com/library/hh847850(v=wps.630).aspx)에서 온라인으로 찾을 수 있습니다.

참고: 세션 구성, 신뢰할 수 있는 호스트, 포트 또는 수신기에 대한 변경을 포함하여 WSMan: 드라이브에서 로컬 컴퓨터에 대한 설정을 보거나 변경하려면 "관리자 권한으로 실행" 옵션으로 사용하여 Windows PowerShell을 시작합니다.

권한 및 인증 문제 해결

이 섹션에서는 사용자 및 컴퓨터 권한과 원격 요구 사항에 관련된 원격 문제를 설명합니다.

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

        ERROR: Access is denied. You need to run this cmdlet from an elevated
        process.

로컬 컴퓨터에서 원격 세션을 시작하거나 세션 구성, 신뢰할 수 있는 호스트, 포트 또는 수신기에 대한 변경을 포함하여 WSMan: 드라이브에서 로컬 컴퓨터에 대한 설정을 보거나 변경하려면 "관리자 권한으로 실행" 옵션으로 사용하여 Windows PowerShell을 시작합니다.

"관리자 권한으로 실행" 옵션을 사용하여 Windows PowerShell을 시작하려면:

-- Windows PowerShell(또는 Windows PowerShell ISE) 아이콘을 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 클릭합니다.

Windows 7 및 Windows Server 2008 R2에서 "관리자 권한으로 실행" 옵션을 사용하여 Windows PowerShell을 시작하려면.

-- Windows 작업 표시줄에서 Windows PowerShell 아이콘을 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 클릭합니다.

참고: Windows Server 2008 R2에서 Windows PowerShell 아이콘은 기본적으로 작업 표시줄에 고정됩니다.

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

        ERROR:  ACCESS IS DENIED
        - or -
        ERROR: The connection to the remote host was refused. Verify that the
        WS-Management service is running on the remote host and configured to
        listen for requests on the correct port and HTTP URL.

컴퓨터에서 원격 명령을 보내도록 하는 데는 구성이 필요하지 않습니다. 그러나 원격 명령을 수신하려면 컴퓨터에서 Windows PowerShell 원격을 사용하도록 설정해야 합니다. 사용하도록 설정하는 작업에는 WinRM 서비스 시작, WinRM 서비스의 시작 유형을 자동으로 설정, HTTP 및 HTTPS 연결용 수신기 만들기, 기본 세션 구성 만들기가 포함됩니다.

Windows PowerShell 원격은 기본적으로 Windows Server 2012 및 최신 버전 Windows Server에서 사용하도록 설정됩니다. 모든 기타 시스템에서는 Enable-PSRemoting cmdlet을 실행하여 원격을 사용하도록 설정합니다. 원격이 사용하지 않도록 설정되어 있으면 Enable-PSRemoting cmdlet을 실행하여 Windows Server 2012 및 최신 버전 Windows Server에서 원격을 다시 사용하도록 설정할 수도 있습니다.

컴퓨터에서 원격 명령을 수신하도록 구성하려면 Enable-PSRemoting cmdlet을 사용합니다. 다음 명령은 모든 필수 원격 설정을 사용하도록 설정하고, 세션 구성을 사용하도록 설정하고, WinRM 서비스를 다시 시작하여 변경 내용을 적용합니다.

        Enable-PSRemoting

모든 사용자 프롬프트를 표시하지 않으려면 다음을 입력합니다.

        Enable-PSRemoting -Force

자세한 내용은 Enable-PSRemoting을 참조하세요.

엔터프라이즈에서 원격을 사용하도록 설정하는 방법

        ERROR:  ACCESS IS DENIED
        - or -
        ERROR: The connection to the remote host was refused. Verify that the
        WS-Management service is running on the remote host and configured to
        listen for requests on the correct port and HTTP URL.

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

엔터프라이즈에서 여러 컴퓨터에 대해 원격을 사용하도록 설정하려면 다음 확장 옵션을 사용할 수 있습니다.

  • -- 원격을 사용하도록 수신기를 구성하려면 "수신기 자동 구성 허용" 그룹 정책을 사용하도록 설정합니다. 자세한 내용은 아래 "그룹 정책을 사용하여 수신기를 사용하도록 설정하는 방법"을 참조하세요.

  • -- 여러 컴퓨터에서 WinRM(Windows 원격 관리)의 시작 유형을 자동으로 설정하려면 Set-Service cmdlet을 사용합니다. 자세한 내용은 아래 "WinRM 서비스의 시작 유형을 설정하는 방법"을 참조하세요.

  • -- 방화벽 예외를 사용하도록 설정하려면 "Windows 방화벽: 로컬 포트 예외 허용" 그룹 정책을 사용합니다. 자세한 내용은 아래 "그룹 정책을 사용하여 방화벽 예외를 만드는 방법"을 참조하세요.

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

        ERROR:  ACCESS IS DENIED
        - or -
        ERROR: The connection to the remote host was refused. Verify that the
        WS-Management service is running on the remote host and configured to
        listen for requests on the correct port and HTTP URL.

도메인의 모든 컴퓨터에서 수신기를 사용하도록 구성하려면 다음 그룹 정책 경로에서 "수신기 자동 구성 허용" 정책을 사용하도록 설정합니다.

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

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

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

        ERROR:  Unable to check the status of the firewall

Enable-PSRemoting cmdlet은 로컬 네트워크가 공용일 때 이 오류를 반환하고 SkipNetworkProfileCheck 매개 변수가 명령에서 사용되지 않습니다.

서버 버전 Windows에서는 Enable-PSRemoting이 모든 네트워크 위치 유형에서 성공합니다. 이 cmdlet은 개인 및 도메인("홈" 및 "회사") 네트워크에 대한 원격 액세스를 허용하는 방화벽 규칙을 만듭니다. 공용 네트워크에서는 같은 로컬 서브넷에서 시작되는 원격 액세스를 허용하는 방화벽 규칙을 만듭니다.

클라이언트 버전 Windows에서는 Enable-PSRemoting이 개인 및 도메인 네트워크에서 성공합니다. 기본적으로 공용 네트워크에서는 실패하지만, SkipNetworkProfileCheck 매개 변수를 사용하면 Enable-PSRemoting이 성공하고 같은 로컬 서브넷에서 시작되는 트래픽을 허용하는 방화벽 규칙을 만듭니다.

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

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

Set-NetFirewallRule cmdlet은 NetSecurity 모듈을 통해 내보냅니다.

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

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

        ERROR:  ACCESS IS DENIED
        - or -
        ERROR: The connection to the remote host was refused. Verify that the
        WS-Management service is running on the remote host and configured to
        listen for requests on the correct port and HTTP URL.

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

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

이 정책은 컴퓨터의 Administrators 그룹 멤버가 제어판에서 Windows 방화벽을 사용하여 Windows 원격 관리 서비스에 대한 방화벽 예외를 만들도록 허용합니다.

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

        ERROR:  ACCESS IS DENIED

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

서버 버전 Windows에서 WinRM(Windows 원격 관리) 서비스의 시작 유형은 자동입니다.

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

원격 컴퓨터에서 서비스의 시작 유형을 설정하려면 Set-Service cmdlet을 사용합니다.

여러 컴퓨터에서 명령을 실행하려면 컴퓨터 이름의 텍스트 파일 또는 CSV 파일을 만들 수 있습니다.

예를 들어 다음 명령은 Servers.txt 파일에서 컴퓨터 이름 목록을 가져오고 모든 컴퓨터에서 WinRM 서비스의 시작 유형을 자동으로 설정합니다.

        C:\PS> $servers = Get-Content servers.txt

        C:\PS> Set-Service WinRM -ComputerName $servers -startuptype Automatic

결과를 확인하려면 Get-WMIObject cmdlet을 Win32_Service 개체와 함께 사용합니다. 자세한 내용은 Set-Service를 참조하세요.

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

        ERROR:  ACCESS IS DENIED

로컬 컴퓨터에 연결하고 명령을 원격으로 실행하려면 로컬 컴퓨터에 원격 명령에 대한 세션 구성이 포함되어야 합니다.

Enable-PSRemoting을 사용하면 이 cmdlet은 로컬 컴퓨터에서 기본 세션 구성을 만듭니다. 원격 사용자는 원격 명령에 ConfigurationName 매개 변수가 없을 때마다 이들 세션 구성을 사용합니다.

컴퓨터의 기본 구성이 등록 해제되거나 삭제되면 Enable-PSRemoting cmdlet을 사용하여 구성을 다시 만듭니다. 이 cmdlet을 반복해서 사용할 수 있습니다. 기능이 이미 구성되어 있으면 오류가 발생하지 않습니다.

기본 세션 구성을 변경했을 때 원래 기본 세션 구성을 복원하려면 Unregister-PSSessionConfiguration cmdlet을 사용하여 변경된 세션 구성을 삭제하고 Enable-PSRemoting cmdlet을 사용하여 원래 구성을 복원합니다. Enable-PSRemoting은 기존 세션 구성을 변경하지 않습니다.

참고: Enable-PSRemoting은 기본 세션 구성을 복원할 때 구성에 대한 명시적 보안 설명자를 만들지 않습니다. 대신, 구성이 기본적으로 안전한 RootSDDL의 보안 설명자를 상속합니다.

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

        Get-Item wsman:\localhost\Service\RootSDDL

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

WSMan: 드라이브에 대한 자세한 내용은 WSMan 공급자("Get-Help wsman")에 대한 도움말 항목을 참조하세요.

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

        ERROR:  ACCESS IS DENIED

PSSession을 만들거나 원격 컴퓨터에서 명령을 실행하려면 기본적으로 현재 사용자가 원격 컴퓨터에서 Administrators 그룹의 멤버여야 합니다. 현재 사용자가 Administrators 그룹 멤버의 계정으로 로그온했더라도 경우에 따라 자격 증명이 필요합니다.

현재 사용자가 원격 컴퓨터에서 Administrators 그룹의 멤버이거나 Administrators 그룹 멤버의 자격 증명을 제공할 수 있으면 New-PSSession, Enter-PSSession 또는 Invoke-Command cmdlet의 Credential 매개 변수를 사용하여 원격으로 연결합니다.

예를 들어 다음 명령은 관리자의 자격 증명을 제공합니다.

        Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

Credential 매개 변수에 대한 자세한 내용은 New-PSSession, Enter-PSSession 또는 Invoke-Command를 참조하세요.

관리 권한이 없는 사용자에 대한 원격을 사용하도록 설정하는 방법

        ERROR:  ACCESS IS DENIED

PSSession을 설정하거나 원격 컴퓨터에서 명령을 실행하려면 사용자에게 원격 컴퓨터에서 세션 구성을 사용할 권한이 있어야 합니다.

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

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

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

        Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI

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

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

        ERROR:  ACCESS IS DENIED

다른 도메인의 사용자가 로컬 컴퓨터에서 Administrators 그룹 멤버이면 이 사용자는 Administrator 권한으로 로컬 컴퓨터에 원격으로 연결할 수 없습니다. 기본적으로 다른 도메인의 원격 연결은 표준 사용자 권한 토큰을 통해서만 실행됩니다.

그러나 LocalAccountTokenFilterPolicy 레지스트리 항목을 사용하여 기본 동작을 변경하고 Administrators 그룹 멤버인 원격 사용자가 Administrator 권한으로 실행하도록 허용할 수 있습니다.

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

정책을 변경하려면 다음 명령을 사용하여 LocalAccountTokenFilterPolicy 레지스트리 항목 값을 1로 설정합니다.

        C:\PS> New-ItemProperty -Name LocalAccountTokenFilterPolicy -Path `
            HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -PropertyType `
            DWord -Value 1

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

        ERROR:  The WinRM client cannot process the request. If the
        authentication scheme is different from Kerberos, or if the client
        computer is not joined to a domain, then HTTPS transport must be used
        or the destination machine must be added to the TrustedHosts
        configuration setting.

New-PSSession, Enter-PSSession 및 Invoke-Command cmdlet의 ComputerName 매개 변수는 IP 주소를 유효한 값으로 받아들입니다. 그러나 Kerberos 인증은 IP 주소를 지원하지 않으므로 IP 주소를 지정할 때마다 NTLM 인증이 기본적으로 사용됩니다.

NTLM 인증을 사용할 때 원격을 사용하려면 다음 절차가 필요합니다.

  • 1. HTTPS 전송을 사용하도록 컴퓨터를 구성하거나 로컬 컴퓨터의 TrustedHosts 목록에 원격 컴퓨터의 IP 주소를 추가합니다.

    자세한 내용은 아래 "TrustedHosts 목록에 컴퓨터를 추가하는 방법"을 참조하세요.

  • 2. 모든 원격 명령에서 Credential 매개 변수를 사용합니다.

    현재 사용자의 자격 증명을 전송할 경우에도 이 매개 변수가 필요합니다.

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

        ERROR:  The WinRM client cannot process the request. If the
        authentication scheme is different from Kerberos, or if the client
        computer is not joined to a domain, then HTTPS transport must be used
        or the destination machine must be added to the TrustedHosts
        configuration setting.

로컬 컴퓨터가 도메인에 없을 때 원격을 사용하려면 다음 절차가 필요합니다.

  • 1. HTTPS 전송을 사용하도록 컴퓨터를 구성하거나 로컬 컴퓨터의 TrustedHosts 목록에 원격 컴퓨터의 이름을 추가합니다.

    자세한 내용은 아래 "TrustedHosts 목록에 컴퓨터를 추가하는 방법"을 참조하세요.

  • 2. 작업 그룹 기반 컴퓨터에서 암호가 설정되어 있는지 확인합니다. 암호가 설정되지 않거나 암호 값이 비어 있으면 원격 명령을 실행할 수 없습니다.

    사용자 계정의 암호를 설정하려면 제어판의 사용자 계정을 사용합니다.

  • 3. 모든 원격 명령에서 Credential 매개 변수를 사용합니다.

    현재 사용자의 자격 증명을 전송할 경우에도 이 매개 변수가 필요합니다.

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

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

신뢰할 수 있는 호스트 목록을 보거나 변경하려면 WSMan: 드라이브를 사용합니다. TrustedHost 항목은 WSMan:\localhost\Client 노드에 있습니다.

컴퓨터에서 Administrators 그룹의 멤버만 컴퓨터에서 신뢰할 수 있는 호스트 목록을 변경할 권한을 가집니다.

주의: TrustedHosts 항목에 대해 설정한 값은 컴퓨터의 모든 사용자에게 적용됩니다.

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

        Get-Item wsman:\localhost\Client\TrustedHosts

Set-Location cmdlet(alias = cd)을 사용하여 WSMan: 드라이브를 통해 위치로 이동할 수도 있습니다. 예를 들면 다음과 같습니다. "cd WSMan:\localhost\Client; dir".

신뢰할 수 있는 호스트 목록에 모든 컴퓨터를 추가하려면 ComputerName에 *(모두) 값을 배치하는 다음 명령을 사용합니다.

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

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

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

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

        Set-Item wsman:\localhost\Client\TrustedHosts -Value <ComputerName>[,<ComputerName>]

여기서 각 <ComputerName> 값의 형식은 다음과 같아야 합니다.

        <Computer>.<Domain>.<Company>.<top-level-domain>

예를 들면 다음과 같습니다.

        Set-Item wsman:\localhost\Client\TrustedHosts -Value Server01.Domain01.Fabrikam.com

컴퓨터 이름을 기존 신뢰할 수 있는 호스트 목록에 추가하려면 먼저 현재 값을 변수에 저장하고 해당 값을 현재 및 새 값이 포함된 쉼표로 구분된 목록으로 설정합니다.

예를 들어 Server01 컴퓨터를 기존 신뢰할 수 있는 호스트 목록에 추가하려면 다음 명령을 사용합니다.

        $curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value

        Set-Item wsman:\localhost\Client\TrustedHosts -Value "$curValue, Server01.Domain01.Fabrikam.com"

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

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

예를 들면 다음과 같습니다.

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

원격 컴퓨터의 TrustedHosts 목록에 컴퓨터를 추가하려면 Connect-WSMan cmdlet을 사용하여 원격 컴퓨터의 노드를 로컬 컴퓨터의 WSMan: 드라이브에 추가합니다. 그다음에 Set-Item 명령을 사용하여 컴퓨터를 추가합니다.

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

컴퓨터 구성 문제 해결

이 섹션에서는 컴퓨터, 도메인 또는 엔터프라이즈의 특성 구성과 관련된 원격 문제를 설명합니다.

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

        ERROR:  The connection to the specified remote host was refused. Verify
        that the WS-Management service is running on the remote host and 
        configured to listen for requests on the correct port and HTTP URL.

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

Windows PowerShell이 사용하는 기본 포트를 변경하려면 WSMan: 드라이브에서 Set-Item cmdlet을 사용하여 수신기 리프 노드에서 포트 값을 변경합니다.

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

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

프록시 서버에서 원격을 구성하는 방법

        ERROR: The client cannot connect to the destination specified in the
        request. Verify that the service on the destination is running and is
        accepting requests.

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

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

  • -- ProxyAccessType

  • -- ProxyAuthentication

  • -- ProxyCredential

특정 명령에 이들 옵션을 설정하려면 다음 절차를 따릅니다.

  • 1. New-PSSessionOption cmdlet의 ProxyAccessType, ProxyAuthentication 및 ProxyCredential 매개 변수를 사용하여 엔터프라이즈에 대한 프록시 설정을 통해 세션 옵션 개체를 만듭니다. 옵션 개체를 변수에 저장합니다.

  • 2. 옵션 개체가 포함된 변수를 New-PSSession, Enter-PSSession 또는 Invoke-Command 명령의 SessionOption 매개 변수 값으로 사용합니다.

예를 들어 다음 명령은 프록시 세션 옵션을 통해 세션 옵션 개체를 만들고 해당 개체를 사용하여 원격 세션을 만듭니다.

        C:\PS> $SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
                -ProxyAuthentication Negotiate -ProxyCredential Domain01\User01

        C:\PS> New-PSSession -ConnectionURI https://www.fabrikam.com

New-PSSessionOption cmdlet에 대한 자세한 내용은 New-PSSessionOption을 참조하세요. 여기에 섹션 본문을 삽입합니다.

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

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

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

        ERROR: The term "<tool-Name>" is not recognized as the name of a cmdlet,
        function, script file, or operable program. Check the spelling of the
        name, or if a path was included, verify that the path is correct and try
        again.

원격 컴퓨터가 64비트 버전 Windows에서 실행되고 원격 명령에서 Microsoft.PowerShell32 등의 32비트 세션 구성을 사용하면 WinRM(Windows 원격 관리)에서는 WOW64 프로세스를 로드하고 Windows에서는 자동으로 %Windir%\System32 디렉터리에 대한 모든 참조를 %windir%\SysWOW64 디렉터리로 리디렉션합니다.

따라서 SysWow64 디렉터리에 없는 Defrag.exe 등의 도구를 System32 디렉터리에서 사용하려고 하면 디렉터리에서 도구를 찾을 수 없습니다.

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

        C:\PS> $s = New-PSSession -ComputerName Server01 -configurationName CustomShell

        C:\PS> invoke-command -session $s {$env:PROCESSOR_ARCHITECTURE}
        x86

세션 구성에 대한 자세한 내용은 about_session_configurations를 참조하세요.

정책 및 기본 설정 문제 해결

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

IMPORT-PSSESSION 및 IMPORT-MODULE에 대한 실행 정책을 변경하는 방법

        ERROR: Import-Module: File <filename> cannot be loaded because the
        execution of scripts is disabled on this system.

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

Import-PSSession 또는 Import-Module을 사용하여 이러한 cmdlet으로 만든 모듈을 가져오려면 현재 세션의 실행 정책은 Restricted 또는 AllSigned일 수 없습니다. Windows PowerShell 실행 정책에 대한 자세한 내용은 about_Execution_Policies를 참조하세요.

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

예를 들어 다음 명령은 RemoteSigned 실행 정책을 통해 프로세스를 시작합니다. 실행 정책 변경은 현재 프로세스에만 영향을 미치고 Windows PowerShell ExecutionPolicy 레지스트리 설정을 변경하지 않습니다.

        Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

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

        PowerShell.exe -ExecutionPolicy RemoteSigned

cmdlet에 대한 자세한 내용은 Import-PSSession, Export-PSSession 및 Import-Module을 참조하세요. 실행 정책에 대한 자세한 내용은 about_Execution_Policies를 참조하세요. PowerShell.exe 콘솔 도움말 옵션에 대한 자세한 내용을 보려면 "PowerShell.exe -?"를 입력합니다.

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

        ERROR: The total data received from the remote client exceeded allowed
        maximum.

할당량을 사용하여 실수로든 악의적이든 과도한 리소스 사용으로부터 로컬 컴퓨터 및 원격 컴퓨터를 보호할 수 있습니다.

기본 구성에서는 다음 할당량을 사용할 수 있습니다.

  • -- WSMan 공급자(WSMan:)에서 제공하는 여러 할당량 설정으로는 WSMan:\<ComputerName> 노드의 MaxEnvelopeSizeKB 및 MaxProviderRequests 설정 및 WSMan:\<ComputerName>\Service 노드의 MaxConcurrentOperations, MaxConcurrentOperationsPerUser 및 MaxConnections 설정이 있습니다.

  • -- New-PSSessionOption cmdlet의 MaximumReceivedDataSizePerCommand 및 MaximumReceivedObjectSize 매개 변수와 $PSSessionOption 기본 설정 변수를 사용하여 로컬 컴퓨터를 보호할 수 있습니다.

  • -- Register-PSSessionConfiguration cmdlet의 MaximumReceivedDataSizePerCommandMB 및 MaximumReceivedObjectSizeMB 매개 변수를 사용하는 등의 방법으로 세션 구성에 제한을 추가하여 원격 컴퓨터를 보호할 수 있습니다.

할당량이 명령과 충돌하면 Windows PowerShell에서 오류가 발생합니다.

오류를 해결하려면 할당량에 맞게 원격 명령을 변경합니다. 또는 할당량 원본을 확인하고 명령을 완료할 수 있도록 할당량을 늘립니다.

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

        Set-PSSessionConfiguration -Name microsoft.PowerShell ` 
            -MaximumReceivedObjectSizeMB 11 -Force

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

WS-Management 할당량에 대한 자세한 내용은 WSMan 공급자에 대한 도움말 항목을 참조하세요("Get-Help WSMan" 입력).

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

        ERROR: The WS-Management service cannot complete the operation within
        the time specified in OperationTimeout.

시간 제한을 사용하여 실수로든 악의적이든 과도한 리소스 사용으로부터 로컬 컴퓨터 및 원격 컴퓨터를 보호할 수 있습니다. 로컬 및 원격 컴퓨터에서 모두 시간 제한을 설정하면 Windows PowerShell에서는 가장 짧은 시간 제한 설정을 사용합니다.

기본 구성에서는 다음 시간 제한을 사용할 수 있습니다.

  1. -- WSMan 공급자(WSMan:)에서 제공하는 여러 클라이언트 쪽 및 서비스 쪽 시간 제한 설정으로는 WSMan:\<ComputerName> 노드의 MaxTimeoutms 설정 및 WSMan:\<ComputerName>\Service 노드의 EnumerationTimeoutms 및 MaxPacketRetrievalTimeSeconds 설정이 있습니다.

  2. -- New-PSSessionOption cmdlet의 CancelTimeout, IdleTimeout, OpenTimeout 및 OperationTimeout 매개 변수와 $PSSessionOption 기본 설정 변수를 사용하여 로컬 컴퓨터를 보호할 수 있습니다.

  3. -- 세션에 대한 세션 구성에서 프로그래밍 방식으로 시간 제한 값을 설정하여 원격 컴퓨터를 보호할 수도 있습니다.

시간 제한 값으로 작업을 완료할 수 없으면 Windows PowerShell에서는 작업을 종료하고 오류가 발생합니다.

오류를 해결하려면 시간 제한 간격 내에서 완료할 명령을 변경하거나 시간 제한 한도의 원본을 확인하고 명령을 완료할 수 있도록 시간 제한 간격을 늘립니다.

예를 들어 다음 명령은 New-PSSessionOption cmdlet을 사용하여 OperationTimeout 값이 4분(MS 단위)인 세션 옵션 개체를 만들고 세션 옵션 개체를 사용하여 원격 세션을 만듭니다.

        C:\PS> $pso = New-PSSessionoption -OperationTimeout 240000

        C:\PS> New-PSSession -ComputerName Server01 -sessionOption $pso

WS-Management 시간 제한에 대한 자세한 내용은 WSMan 공급자에 대한 도움말 항목을 참조하세요("Get-Help WSMan" 입력).

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

응답하지 않는 동작 문제 해결

이 섹션에서는 명령 완료를 방해하거나 Windows PowerShell 프롬프트 반환을 방해하거나 지연하는 원격 문제를 설명합니다.

명령을 중단하는 방법

사용자 인터페이스가 있는 프로그램, 입력 프롬프트를 표시하는 콘솔 응용 프로그램, Win32 콘솔 API를 사용하는 콘솔 응용 프로그램과 같은 몇몇 기본 Windows 프로그램은 Windows PowerShell 원격 호스트에서 제대로 작동하지 않습니다.

이들 프로그램을 사용할 때 출력이 없거나 부분 출력되거나 원격 명령이 완료되지 않는 등의 예상치 않은 동작이 나타날 수 있습니다.

응답하지 않는 프로그램을 종료하려면 CTRL + C를 입력합니다. 보고될 수 있는 모든 오류를 보려면 로컬 호스트 및 원격 세션에서 "$error"를 입력합니다.

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

         ERROR: The I/O operation has been aborted because of either a thread exit
         or an  application request.

작업이 완료되기 전에 종료되면 이 오류가 반환됩니다. 일반적으로 다른 WinRM 작업이 진행 중일 때 WinRM 서비스가 중지되거나 다시 시작되면 이 문제가 발생합니다.

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

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

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

             Start-Service WinRM
    
  • 3. 오류를 생성한 명령을 다시 실행합니다.

참고 항목

온라인 버전: https://technet.microsoft.com/library/hh847850(v=wps.630).aspx

about_Remote

about_Remote_Requirements

about_Remote_Variables