排查 Powershell 中无法识别 Invoke-Sqlcmd 问题
2025-06-24#PowerShell
一个在 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 命令。