Computer >> 컴퓨터 >  >> 시스템 >> Windows

Windows 10에서 서명된 PowerShell cmdlet이 느리게 실행되는 원인과 해결 방법

cmdletWindows PowerShell 환경에서 사용되는 경량 명령입니다. Windows PowerShell 런타임은 명령줄에서 제공되는 자동화 스크립트의 컨텍스트 안에서 이러한 cmdlet을 호출하며, Windows PowerShell API를 통해 프로그래밍 방식으로도 호출할 수 있습니다. 이번 글에서는 Windows 10에서 서명된 PowerShell cmdlet이 서명되지 않은 cmdlet보다 느리게 실행되는 문제의 원인을 살펴보고, 이를 해결하는 방법까지 함께 안내합니다.

cmdlet은 하나의 동작을 수행한 뒤 일반적으로 파이프라인의 다음 명령으로 Microsoft .NET Framework 개체를 반환합니다. cmdlet을 작성하려면 두 가지 특수 cmdlet 기본 클래스 중 하나에서 파생되는 클래스를 구현해야 하며, 파생 클래스는 다음 요건을 충족해야 합니다.

  • 파생 클래스를 cmdlet으로 식별하는 특성(attribute)을 선언할 것
  • 공용 속성을 cmdlet 매개 변수로 식별하는 특성이 적용된 public 속성을 정의할 것
  • 레코드를 처리하기 위해 하나 이상의 입력 처리 메서드를 재정의할 것

서명된 PowerShell cmdlet이 느리게 실행되는 원인

실제 환경에서 서명된(signed) Windows PowerShell cmdlet이 서명되지 않은(unsigned) cmdlet보다 눈에 띄게 느리게 실행되는 경우가 있습니다. cmdlet을 실행할 때마다 몇 초씩 지연이 발생한다면 아래의 원인을 의심해 볼 수 있습니다.

이 문제는 컴퓨터가 인증서 신뢰 목록(Certificate Trust List, CTL) 확인을 위해 다음 주소에 접속하지 못할 때 발생합니다.

https://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab
https://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab

서명된 cmdlet이 실행되면 PowerShell은 코드 서명 인증서의 유효성을 검증하는 과정을 거치며, 이 과정에서 위 주소의 CTL에 접근합니다. 네트워크에 문제가 있는 경우(예: 잘못된 프록시 설정, 방화벽에 의한 차단 등) 해당 서버에 연결하지 못하고 타임아웃이 발생할 때까지 대기하게 되는데, 이 대기 시간만큼 cmdlet 실행이 지연됩니다. 반면 서명되지 않은 cmdlet은 인증서 검증 단계 자체가 없기 때문에 상대적으로 빠르게 실행됩니다.

그룹 정책을 통해 해결하는 방법

이 문제를 우회하려면 로컬 그룹 정책 편집기에서 Microsoft 루트 인증서 자동 업데이트 기능을 비활성화하면 됩니다. 아래 단계를 따르세요.

Windows 10에서 서명된 PowerShell cmdlet이 느리게 실행되는 원인과 해결 방법
  1. Windows 키 + R을 눌러 실행 대화 상자를 연 뒤 gpedit.msc를 입력하고 Enter 키를 눌러 로컬 그룹 정책 편집기를 실행합니다.
  2. 다음 경로로 이동합니다.

    컴퓨터 구성 > Windows 설정 > 보안 설정 > 공개 키 정책

  3. 오른쪽 세부 정보 창에서 인증서 경로 유효성 검사 설정을 두 번 클릭합니다.
  4. 네트워크 검색 탭을 선택합니다.
  5. 이 정책 설정 정의 확인란을 선택합니다.
  6. Microsoft 루트 인증서 프로그램에서 자동으로 인증서 업데이트(권장) 확인란의 선택을 해제합니다.
  7. 적용 > 확인을 클릭합니다.

설정이 완료되면 로컬 그룹 정책 편집기를 닫습니다. 변경 사항을 즉시 적용하려면 관리자 권한 명령 프롬프트에서 gpupdate /force 명령을 실행하거나 시스템을 다시 시작하면 됩니다.

참고: 이 설정을 변경하면 Microsoft 루트 인증서 프로그램을 통한 자동 인증서 업데이트가 중단됩니다. 따라서 조직의 보안 정책에 미치는 영향을 검토한 후 적용하는 것이 좋습니다.