PowerShell 是一種跨平臺的任務自動化和配置管理框架,由命令行管理程序和腳本語言組成。 與大多數接受並返回文本的 shell 不同,PowerShell 構建在 .NET 公共語言運行時 (CLR) 的基礎之上,接受並返回 .NET 對象。 這一根本上的改變引入了全新的自動化工具和方法。
新的PowerShell 7也已經支持在 macOS 和多個 Linux 發行版本上運行,已然成爲了一個跨平臺的工具.
最近,由於工作需要將Windows PowerShell 5.1升級到PowerShell 7.0,在升級過渡的過程中,發現升級後發現留存的Windows PowerShell 5.1配合Visual Studio Code使用時會出現Package Manager無法更新的問題,即使在PowerShell的ISE中也會出現(powershell的包管理器,以便於從PSGallery獲得一些功能增強性的Module).
解決方法(替換老舊的PowerShellGet和NuGet Provider(需要手動)):
由於舊版本的PowerShellGet模塊無法通過update-module這個命令來升級或者爲PS 5.1安裝新的模塊,所以需要先安裝PS 7.0,通過PS7.0獲得新的PowerShellGet和NuGet Provider,然後替換掉PS 5.1中老的Provider就可以了.
1.首先找到Windows PowerShell 5.1的Module路徑(需要找到x86和x64的路徑),因爲Windows系統自帶PowerShell 5.1包括x86和x64. 所以這裏需要分別處理兩個不同的路徑.
2.從github下載並安裝PS7 https://github.com/PowerShell/PowerShell/releases/download/v7.0.2/PowerShell-7.0.2-win-x64.msi
安裝完成後,打開Visual Studio Code, 將自動切換到PS7的集成環境.
執行
Install-Module -Name PowerShellGet -Force -Verbose
3.安裝完成後,將PS7 Module下的Package Manager和PowerShellGet替換到PowerShell 5.1的模塊路徑中.
最終就都能在PS5.1和PS7中正常訪問PSGallery了.