Я пытаюсь использовать SMO WMI API / объекты в PowerShell 2.0 в Windows 7 с установленным SQL Server 2008 R2, чтобы получить список экземпляров SQL Server на локальном компьютере с помощью Управляемый компьютер объект. Однако я получаю исключения после создания экземпляров объектов, когда пытаюсь получить доступ к каким-либо данным на них. Я запускаю PowerShell как администратор.
$computer = New-Object Microsoft.SqlServer.Management.Smo.WMI.ManagedComputer ($env:computername)
$computer.ServerInstances
Приводит к этой ошибке:
При попытке перечислить коллекцию возникло следующее исключение: «Исключение произошло в SMO при попытке управления службой.».
В строке: 1 символ: 89
+ (Новый объект Microsoft.SqlServer.Management.Smo.WMI.ManagedComputer ($ env: computername)). <<<< ServerInstances
+ CategoryInfo: NotSpecified: (:) [], ExtendedTypeSystemException
+ FullyQualifiedErrorId: ExceptionInGetEnumerator
Есть ли какая-то услуга, которую я должен включить, чтобы это работало? Служба WMI запущена. Нужны ли мне другие настройки? Почему я не могу перечислить экземпляры SQL Server?
Вы запускаете этот код как администратор? Для доступа к 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")