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

如何让Invoke-Sqlcmd正确识别SQLCMDUSER、SQLCMDPASSWORD环境变量

问题原因

该cmdlet支持SQLCMD脚本变量(例如SQLCMDUSER),默认情况下不会主动加载SQLCMD脚本变量。

你遇到的问题正是该默认规则导致的:即使提前配置了对应环境变量,Invoke-Sqlcmd也不会主动读取使用这些值。

解决方案

方案1:开启SQLCMD变量支持(适用较新版本SqlServer模块)

调用时添加-EnableSqlCmdVariables参数,启用SQLCMD变量自动加载能力,修改后脚本如下:

$env:SQLCMDUSER="user"
$env:SQLCMDPASSWORD="password"
Invoke-Sqlcmd -Query "USE master;" -ServerInstance "." -EnableSqlCmdVariables

方案2:手动传参(全版本兼容)

如果不想开启全局SQLCMD变量支持,或者使用的SqlServer模块版本较旧,可以直接把环境变量值传递给对应参数:

$env:SQLCMDUSER="user"
$env:SQLCMDPASSWORD="password"
Invoke-Sqlcmd -Query "USE master;" -ServerInstance "." -Username $env:SQLCMDUSER -Password $env:SQLCMDPASSWORD

旧版本兼容方案

如果使用的是21.x版本以下的SqlServer模块,无-EnableSqlCmdVariables参数,可以通过显式传入变量的方式实现:

Invoke-Sqlcmd -Query "USE master;" -ServerInstance "." -Variable @("SQLCMDUSER=user","SQLCMDPASSWORD=password")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:42:00