PowerShell: Paket Kaynağı Çözümlenemiyor


Çevrimiçi PSGallery'den PowerShell modüllerini yüklemeye çalıştığınızda aşağıdaki hatayı görebilirsiniz:

Install-Module SqlServer
WARNING: Unable to resolve package source 'https://www.powershellgallery.com/api/v2'.
PackageManagement\Find-Package : No match was found for the specified search criteria and module name 'sqlserver. Try Get-PSRepository to see all available registered module repositories.
NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.FindPackage

Ne olursa olsun, Nuget sağlayıcısı kullanılarak herhangi bir PowerShell modülü yüklenirken benzer bir hata görünecektir: Exchange Online Powershell modülü, AzureAD, VMware PowerCLI, PSWindowsUpdate, SecretManagement, SQLServer, vb. Aynı zamanda, herhangi bir çevrimdışı PowerShell modülünü yükleyebilirsiniz. manuel olarak.

Sorun, Windows 10, Windows Server 2016 veya önceki Windows sürümlerinde oluşabilir. Bunun nedeni, PowerShell'in varsayılan olarak PSGallery deposuna bağlanmak için eski ve güvenli olmayan bir TLS 1.0 protokolünü kullanmaya çalışmasıdır. Nisan 2020'den beri PowerShell Galerisi, NuGet sağlayıcısına yalnızca TLS 1.2 kullanarak bağlanmayı kabul ediyor.

Windows'ta TLS 1.0 ve TLS 1.1 devre dışı değilse, geçerli PowerShell oturumunda TLS 1.2'yi kullanmak için aşağıdaki komutu çalıştırın:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

TLS 1.2, Windows 8 ve Windows Server 2012'den başlayarak tüm Windows sürümlerinde desteklenir. Desteklenen TLS sürümlerinin bir listesini PowerShell'de görüntüleyebilirsiniz:

[enum]::GetNames([Net.SecurityProtocolType])

Windows 7 SP1/Windows Server 2008 R2'de TLS 1.2 desteğini etkinleştirmek için KB3140245 ve MicrosoftEasyFix51044.msi düzeltmesini yükleyin.

Windows 7'niz TLS 1.2'yi desteklemiyorsa, Hata 0x800CCC1A'yı göreceksiniz — Outlook ile herhangi bir modern e-posta hizmetine bağlanmaya çalışıyorsanız, sunucunuz belirttiğiniz şifreleme türünü desteklemiyor.

Artık modülü PowerShell Galerisi'nden yükleyebilir veya güncelleyebilirsiniz:

PowerShell konsolunuzu bir sonraki açışınızda TLS 1.2 protokolünü tekrar etkinleştirmeniz gerekecek. Bağlantı için PowerShell'de kullanılan protokol sürümlerini aşağıdaki gibi görüntüleyebilirsiniz:

[Net.ServicePointManager]::SecurityProtocol

PowerShell'i her açtığınızda TLS 1.2'yi etkinleştirmekten kaçınmak için .NET Framework için varsayılan TLS sürümünü değiştirebilirsiniz. Bunu yapmak için PowerShell'i kullanarak kayıt defterinde aşağıdaki değişiklikleri yapın:

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

Bilgisayarınız internete bir proxy sunucu üzerinden bağlıysa, PowerShell oturumunuzda proxy bağlantısının yapılandırıldığından emin olun:

netsh winhttp show proxy

Proxy sunucusu ayarlarını Windows'tan içe aktarabilirsiniz:

netsh winhttp import proxy source=ie

URI'den indirilemeyen PowerShell modüllerini yüklerken benzer bir hata önceki makalede anlatılmıştır.

İlgili makaleler