Install-PackageProvider : 'NuGet' 공급자에 대해 지정된 검색 조건에 일치하는 항목을 찾을 수 없습니다.
윈도우 서버 2016을 (좀 오래되었지만) ISO/DVD로 처음 설치한 상태에서 NuGet 패키지 관리자를 설치하려면 오류가 발생하는데, 결론부터 말하자면 TLS 1.2 이상으로 연결을 해줘야 하기 때문이다.
이 문제를 겪게 된 상황은 아래와 같다.
일단 윈도우 서버 2016을 설치했고, 윈도우 업데이트 관리를 위해 PSWindowsUpdate 모듈을 설치하려 하였다.
Install-Module -Name PSWindowsUpdate |
그랬더니 아래와 같이 빨간 글씨의 에러가 발생하였다.
일단 에러가 발생하는 사유는 NuGet 패키지 관리자가 없기 때문이었다. 따라서 NuGet을 먼저 설치하려 해 보았다. (사실 위 화면에 이미 자동 시도되어 있다)
Install-PackageProvider -Name NuGet -Force |
위 화면과 동일하게 빨간색 에러가 뜬다.
언뜻 보면 인터넷 연결이 안되어 있는 것으로 보이지만, 인터넷 연결은 잘 되어 있다. 이게 바로 TLS 1.2 이상 사용을 안 해서 발생하는 오류인데, 문구만 봐서는 확인이 힘들다.
TLS 1.2 이상을 기본 사용하게 하는 방법은 아래와 같다.
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name SystemDefaultTlsVersions -Type Dword -Value 1 -Force Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name SchUseStrongCrypto -Type Dword -Value 1 -Force Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name SystemDefaultTlsVersions -Type Dword -Value 1 -Force Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name SchUseStrongCrypto -Type Dword -Value 1 -Force |
docs.microsoft.com/ko-kr/mem/configmgr/core/plan-design/security/enable-tls-1-2-client
이렇게 레지스트리를 설정하고 나면 NuGet 패키지 관리자가 잘 설치된다.
물론 따라서 PSWindowsUpdate 모듈도 잘 설치되었다.
참고로 레지스트리로 .NET 설정을 변경하지 않고 일회성으로 파워쉘 세션에만 적용하려면 아래와 같이 처리하면 된다.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 |
'PowerShell' 카테고리의 다른 글
DNS TXT Record spf1 include ip4 추출 (0) | 2021.03.20 |
---|
최근에 달린 댓글 최근에 달린 댓글