PowerShell: אין אפשרות לפתור את מקור החבילה


כאשר אתה מנסה להתקין מודולים PowerShell מתוך PSGallery המקוון, ייתכן שתראה את השגיאה הבאה:

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

שגיאה דומה תופיע בעת התקנת כל מודול PowerShell באמצעות ספק Nuget, לא משנה מה זה: מודול Powershell של Exchange Online, AzureAD, VMware PowerCLI, PSWindowsUpdate, SecretManagement, SQLServer וכו '. במקביל, באפשרותך להתקין כל מודול PowerShell לא מקוון באופן ידני.

הבעיה עלולה להתרחש ב- Windows 10, Windows Server 2016 או גירסאות קודמות של Windows. הסיבה לכך היא ש- PowerShell מנסה להשתמש בפרוטוקול TLS 1.0 מדור קודם ולא מאובטח כדי להתחבר למאגר PSGallery כברירת מחדל. מאז אפריל 2020, גלריית PowerShell מקבלת התחברות לספק NuGet באמצעות TLS 1.2 בלבד.

אם TLS 1.0 ו- TLS 1.1 אינם זמינים ב- Windows, הפעל את הפקודה הבאה כדי להשתמש ב- TLS 1.2 בהפעלת PowerShell הנוכחית:

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

TLS 1.2 נתמך בכל גירסאות Windows החל מ- Windows 8 ו- Windows Server 2012. באפשרותך להציג רשימה של גירסאות TLS נתמכות ב- PowerShell:

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

כדי לאפשר תמיכה TLS 1.2 ב- Windows 7 SP1/Windows Server 2008 R2, התקן את KB3140245 ואת תיקון MicrosoftEasyFix51044.msi.

אם Windows 7 שלך אינו תומך ב- TLS 1.2, תראה שגיאה 0x800CCC1A — השרת שלך אינו תומך בסוג ההצפנה שציינת אם אתה מנסה להתחבר לשירות דואר אלקטרוני מודרני כלשהו באמצעות Outlook.

כעת באפשרותך להתקין או לעדכן את המודול מגלריית PowerShell:

בפעם הבאה שתפתח את מסוף PowerShell, יהיה עליך להפעיל שוב את פרוטוקול TLS 1.2. באפשרותך להציג גירסאות פרוטוקול המשמשות ב- PowerShell לחיבור באופן הבא:

[Net.ServicePointManager]::SecurityProtocol

כדי להימנע מהפיכת TLS 1.2 לזמין בכל פעם שאתה פותח את PowerShell, באפשרותך לשנות את גירסת ברירת המחדל של TLS עבור .NET Framework. לשם כך, בצע את השינויים הבאים ברישום באמצעות PowerShell:

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

אם המחשב שלך מחובר לאינטרנט באמצעות שרת Proxy, ודא שחיבור ה- Proxy מוגדר בהפעלת PowerShell:

netsh winhttp show proxy

באפשרותך לייבא הגדרות שרת proxy מ- Windows:

netsh winhttp import proxy source=ie

שגיאה דומה בעת התקנת מודולי PowerShell אין אפשרות להוריד מ- URI מתואר במאמר הקודם.