我正在尝试使用 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 修复安装。这将重新安装所有核心操作系统文件和配置,但不会删除您的应用程序或数据。但您仍应确保在执行此操作之前备份所有重要文档。
其他人则通过以下方式获得了成功:
- 运行.NET 修复工具
- 手动重新安装/修复最新的 .NET 版本
- 运行Windows 10 更新助手
您可能需要在执行 Windows 修复安装之前尝试这些步骤。它们对我的情况不起作用。