排查 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 命令。