什么原因导致 PowerShell 不支持 Invoke-Sqlcmd 查询中的“-As Datatables”

什么原因导致 PowerShell 不支持 Invoke-Sqlcmd 查询中的“-As Datatables”

我正在尝试追踪 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

相关内容