Azure发布流水线运行Invoke-Sqlcmd提示SqlServer模块无法加载如何解决
自托管Azure代理无法执行Invoke-Sqlcmd报错解决方案
根本原因
本地登录可正常执行命令、代理执行失败的核心差异是运行账号的环境与权限不同:
- 个人登录账号的PowerShell环境变量、模块加载权限均已正常配置
- Azure代理默认使用Local System服务账号运行,该账号的模块搜索路径、执行权限和个人账号不一致,无法正常加载全局安装的SqlServer模块
修复步骤
- 第一步:在你要执行的PowerShell脚本开头强制指定路径导入模块,避免自动搜索加载失败:
Import-Module "C:\Program Files\WindowsPowerShell\Modules\SqlServer\21.1.18226\SqlServer.psd1" -Force
- 第二步:确认Azure代理服务的运行账号
打开Windows服务管理器,找到对应Azure DevOps代理的服务项,右键选择「属性」→「登录」选项卡,将运行账号修改为你本地可以正常执行命令的账号,修改完成后重启代理服务。 - 第三步:如果上一步无法修改服务账号,可全局重新安装SqlServer模块,给所有用户授权访问:
用管理员权限打开PowerShell终端,执行如下命令:
Install-Module -Name SqlServer -RequiredVersion 21.1.18226 -Scope AllUsers -Force
- 第四步:校验PowerShell位阶一致性
如果还存在报错,检查流水线PowerShell任务的高级配置,确认勾选了使用64位PowerShell选项,避免32位进程无法加载64位模块的问题。
内容的提问来源于stack exchange,提问作者MiguelSlv
相关产品推荐
相关产品推荐

