如何解决PnP PowerShell命令在Windows PowerShell ISE中的运行问题?
解决Windows PowerShell ISE里运行PnP PowerShell命令的问题
为啥会报错?
Windows PowerShell ISE默认搭载的是Windows PowerShell 5.1,而新版PnP PowerShell模块(PnP.PowerShell)仅支持PowerShell 7及以上版本。你在PowerShell 7中能正常运行脚本,就是因为环境匹配了模块要求;ISE用的5.1环境和新版PnP模块不兼容,所以触发报错。
两种解决办法
办法1:给Windows PowerShell 5.1安装兼容的旧版PnP模块
如果必须依赖5.1环境运行,需要安装专门支持它的旧版PnP模块(SharePointPnPPowerShellOnline,该模块已停止维护,但仍可正常使用):
- 右键点击Windows PowerShell,选择「以管理员身份运行」
- 执行以下命令安装模块:
Install-Module -Name SharePointPnPPowerShellOnline -Force -AllowClobber - 安装完成后打开Windows PowerShell ISE,直接运行原有脚本即可(旧版模块的
Connect-PnPOnline和Set-PnPFileCheckedOut命令与新版参数基本一致,无需修改脚本)
办法2:配置Windows PowerShell ISE使用PowerShell 7作为宿主
这个方案更推荐,直接让ISE搭载PowerShell 7环境,完美兼容新版PnP模块:
- 确保已安装PowerShell 7(未安装的话直接从微软官网下载安装即可)
- 以管理员身份打开Windows PowerShell ISE
- 执行以下命令切换ISE的运行宿主:
Set-ItemProperty -Path 'HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' -Name 'Path' -Value 'C:\Program Files\PowerShell\7\pwsh.exe' - 重启Windows PowerShell ISE,再运行原有脚本即可正常执行
验证环境(可选)
不管用哪个办法,运行脚本前可以执行以下命令确认环境是否匹配:
# 查看当前PowerShell版本 $PSVersionTable.PSVersion # 查看已安装的PnP模块 Get-Module -ListAvailable PnP*
内容的提问来源于stack exchange,提问作者Haritha
相关产品推荐
相关产品推荐

