You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级PowerShell 7与dbatools 2后出现“同名程序集已加载”错误

解决PowerShell 7中导入SqlServer和dbatools时的程序集重复加载错误

问题原因

你遇到的错误是因为SqlServer模块和dbatools模块都依赖Microsoft.Data.SqlClient程序集,但两者加载的版本或时机存在冲突。直接用pwsh testScript.ps1运行时,PowerShell会话可能加载了配置文件(Profile)或其他预加载内容,导致程序集提前被加载;而VS Code的运行按钮默认会启动干净会话,避开了这个冲突。另外错误信息里的dbatools路径指向WindowsPowerShell的模块目录,说明你的PowerShell 7可能在读取PS5.1的模块,这也加剧了版本冲突。

解决方案

1. 调整模块导入顺序

把dbatools的导入放在SqlServer前面,dbatools对程序集的管理更灵活,能更好地处理兼容问题:

Import-Module dbatools
Import-Module sqlserver
Write-Host "Done"

2. 只使用dbatools(推荐)

dbatools已经封装了绝大多数SqlServer模块的功能,且自带适配的Microsoft.Data.SqlClient版本,完全没必要重复导入SqlServer模块。修改脚本为:

Import-Module dbatools
Write-Host "Done"

3. 确保dbatools安装在PowerShell 7专属模块路径

错误里的dbatools路径是C:\Program Files\WindowsPowerShell\Modules,属于PS5.1的模块目录。你需要在PowerShell 7中重新安装dbatools,确保它被放在PS7的模块路径下:

Install-Module dbatools -Scope CurrentUser -Force

安装完成后,用Get-Module dbatools -ListAvailable查看,确认路径为C:\Users\<你的用户名>\Documents\PowerShell\Modules或C:\Program Files\PowerShell\Modules。

4. 用干净会话运行脚本

如果你的PowerShell配置文件里加载了其他模块导致程序集预加载,可以用无配置文件的方式启动会话:

pwsh -NoProfile testScript.ps1

内容的提问来源于stack exchange,提问作者gjones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:42:46