跳到内容
观澜涉川 · 札记EN

排查 Powershell 中无法识别 Invoke-Sqlcmd 问题

· 约 1 分钟阅读

一个在 Docker 中运行的 PowerShell 脚本,最近出现了无法识别 Invoke-Sqlcmd 的问题。

在安装了 SqlServer 模块后,运行 Invoke-Sqlcmd 命令遇到如下错误:

The term 'Invoke-Sqlcmd' is not recognized as a name of a cmdlet, function, script file, or executable program.

为此,首先查看 SqlServer 模块包含了哪些命令:

PS /> Get-Command -Module SqlServer
CommandType Name Version Source
----------- ---- ------- ------
Alias Decode-SqlName 22.4.5.1 SqlServer
Alias Encode-SqlName 22.4.5.1 SqlServer
Function Invoke-SqlNotebook 22.4.5.1 SqlServer
Function SQLSERVER: 22.4.5.1 SqlServer
Cmdlet Get-SqlAssessmentItem 22.4.5.1 SqlServer
Cmdlet Invoke-SqlAssessment 22.4.5.1 SqlServer

由此可见,该模块并不包含 Invoke-Sqlcmd 命令。百思不得其解,后来将项目所使用的镜像 mcr.microsoft.com/powershell:7.2-alpine-3.13 升级为较新的版本 mcr.microsoft.com/powershell:7.5-alpine-3.20 ,然后在安装并导入 SqlServer 模块,即可使用 Invoke-Sqlcmd 命令。