PowerShell SqlServer 模块仅导入函数和别名,但不导入 cmdlet

PowerShell SqlServer 模块仅导入函数和别名,但不导入 cmdlet

我正在尝试使用 SqlServer PowerShell 模块,该模块可在PowerShell 库

安装后,无论是安装到-Scope CurrentUser管理会话还是在管理会话中,执行此操作Import-Module SqlServer只会导致三个命令被导入到会话中:

PS C:\Users\nreiling> Get-Command -Module SqlServer

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Decode-SqlName                                     21.0.17262 sqlserver
Alias           Encode-SqlName                                     21.0.17262 sqlserver
Function        SQLSERVER:                                         21.0.17262 sqlserver

尽管这样做(Get-Module -Name SqlServer -ListAvailable)[0].ExportedCommands.Values列出了所有应该包含的命令,但情况仍然如此:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Add-RoleMember                                     21.0.17262 SqlServer
Cmdlet          Add-SqlAvailabilityDatabase                        21.0.17262 SqlServer
Cmdlet          Add-SqlAvailabilityGroupListenerStaticIp           21.0.17262 SqlServer
Cmdlet          Add-SqlAzureAuthenticationContext                  21.0.17262 SqlServer
Cmdlet          Add-SqlColumnEncryptionKeyValue                    21.0.17262 SqlServer
Cmdlet          Add-SqlFirewallRule                                21.0.17262 SqlServer
Cmdlet          Add-SqlLogin                                       21.0.17262 SqlServer
Cmdlet          Backup-ASDatabase                                  21.0.17262 SqlServer
Cmdlet          Backup-SqlDatabase                                 21.0.17262 SqlServer
                                        ...
Cmdlet          Test-SqlSmartAdmin                                 21.0.17262 SqlServer
Cmdlet          Write-SqlTableData                                 21.0.17262 SqlServer
Function        SQLSERVER:                                         21.0.17262 SqlServer
Alias           Decode-SqlName                                     21.0.17262 SqlServer
Alias           Encode-SqlName                                     21.0.17262 SqlServer

我尝试安装旧版本的 SqlServer 模块,并尝试在我的计算机上使用不同的用户帐户。多次重启、新的 PS 会话等。Import-Module在详细/调试模式下运行不会引发任何错误,它只会导入函数和别名;没有任何 Cmdlet。问题因素似乎是这个特定的 Windows 系统,即 Windows 10 Pro 1803。

还值得注意的是,我之所以尝试使用此模块,是因为随 SQL Server Management Studio 安装的 sqlps 模块在此机器上停止工作。我不知道为什么会这样;我猜是与 Windows 或 SSMS 更新有关,但为了至少 SqlServer 模块安装时没有错误和关于破坏的警告,我从 $PSModulePath 中删除了该模块。同时出现的另一个问题是我的 WSMan TrustedHosts 列表被重置(为空白),导致我之前已经解决的 PowerShell 远程处理问题(此机器未加入域)。

我到底该如何解决这个问题?

答案1

问题的根源似乎是.Net 4.7.2 安装损坏,在安装 1803 Windows 10 更新时偶尔会发生这种情况。

我解决这个问题的唯一方法是Windows 10 修复安装。这将重新安装所有核心操作系统文件和配置,但不会删除您的应用程序或数据。但您仍应确保在执行此操作之前备份所有重要文档。

其他人则通过以下方式获得了成功:

您可能需要在执行 Windows 修复安装之前尝试这些步骤。它们对我的情况不起作用。

相关内容