我正在尝试追踪 CI 服务器上的故障。它正在运行 PowerShell 命令:
$dt = Invoke-Sqlcmd -server $dbServer -database $dbName $sqlQueryReport -As DataTables -QueryTimeout 900
错误信息为“找不到与参数名称‘As’匹配的参数”。但根据文档,“-As DataTables” 是传递给 Invoke-Sqlcmd 的完全合法的参数。
我确实注意到,在文档中,它将-Query
参数标记放在 SQL 查询之前,而此 CI 脚本没有。但此 CI 作业中省略的其他脚本没有给出类似的错误-Query
,因此不清楚这是否相关。
有人知道这里发生了什么事吗?
答案1
您可能拥有旧版本的SqlServer
尚未实现此参数的模块,甚至可以使用Invoke-Sqlcmd
来自SQLPS
模块,其中这个参数根本没有实现。
像这样检查命令的版本和源模块:
PS C:\Users\Simon> get-command invoke-sqlcmd
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Invoke-Sqlcmd 21.1.18256 SqlServer
如果源不是 SqlServer,或者版本不是 21.1.18256,请安装/更新模块:
更新:
Update-Module SqlServer
安装:
Find-Module SqlServer | Install-Module