我正在尝试在安装了 SQL Server 2008 R2 的 Windows 7 上使用 PowerShell 2.0 中的 SMO WMI API/对象来获取本地计算机上的 SQL Server 实例列表管理计算机对象。但是,当我实例化对象后尝试访问其上的任何数据时,会出现异常。我以管理员身份运行 PowerShell。
$computer = New-Object Microsoft.SqlServer.Management.Smo.WMI.ManagedComputer ($env:computername)
$computer.ServerInstances
导致此错误:
尝试枚举集合时引发了以下异常:“尝试管理服务时,SMO 中发生异常。”。
位于行:1 字符:89
+ (New-Object Microsoft.SqlServer.Management.Smo.WMI.ManagedComputer ($env:computername))。<<<< ServerInstances
+ CategoryInfo : NotSpecified: (:) [], ExtendedTypeSystemException
+ FullyQualifiedErrorId : ExceptionInGetEnumerator
我必须启用某些服务才能使其正常工作吗?WMI 服务正在运行。我还需要其他设置吗? 为什么我无法枚举 SQL Server 实例?
答案1
您是以管理员身份运行此代码的吗?访问 WMI 需要 WMI 权限。但是,我使用了另一种方法。我在此处记录了该方法:http://www.powershellmagazine.com/2013/04/24/pstip-enumerate-all-sql-server-instances-in-a-network/
[Microsoft.SqlServer.Management.Smo.SmoApplication]::EnumAvailableSqlServers("MyDBServer")