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了.