PowerShell SMO ManagedComputer.ServerInstances 集合为空

PowerShell SMO ManagedComputer.ServerInstances Collection is Empty

我正在尝试使用 ManagedComputer.ServerInstances 集合枚举 SQL 个服务器实例:

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")  
$ManagedComputer = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer
$ManagedComputer

预期输出类似于以下内容:

ConnectionSettings : Microsoft.SqlServer.Management.Smo.Wmi.WmiConnectionInfo
Services           : {MSSQLSERVER, SQLBrowser...}
ClientProtocols    : {np, sm, tcp}
ServerInstances    : {MSSQLSERVER}
...

对于我管理的一台特定主机,ServerInstances 集合为空:

ConnectionSettings : Microsoft.SqlServer.Management.Smo.Wmi.WmiConnectionInfo
Services           : {MSSQLSERVER, SQLBrowser...}
ClientProtocols    : {np, sm, tcp}
ServerInstances    : {}
...

使用了 64 位 PowerShell v5 会话。默认 SQL Server 2016 实例安装在整个队列中。什么可能导致 ServerInstances 集合为空?

在某些情况下,主机上安装了 SQL Server Management Studio 2017。这可能会对查询 ServerInstance 集合产生影响吗?

在与 Microsoft 支持人员通话后,他们确认如果 SQL Server Management Studio 2017 与 SQL Server 2016 一起安装,WMI 程序集可能会不时损坏。即使在 运行 mofcomp 重新编译 WMI 存储库之后,问题仍然存在。

卸载 SSMS 2017 并安装最新版本后,此问题已解决。