Access SQL - пространства имен WMI с удаленного компьютера - PullRequest
3 голосов
/ 13 января 2010

Я играю с событиями Powershell и SQL WMI, и мне интересно, могу ли я сделать это удаленно из блокнота администратора:

Я бы хотел запросить пространство имен «root \ Microsoft \ SqlServer \ ServerEvents \ MSSQLSERVER»:

На SQLServer напрямую:

get-wmiobject -list -namespace "root \ Microsoft \ SqlServer" >> Работает!

get-wmiobject -list -namespace "root \ Microsoft \ SqlServer \ ServerEvents \ MSSQLSERVER" >> Работает!

На моем админ-машине:

get-wmiobject -list -namespace "root \ Microsoft \ SqlServer" >> Работает!

get-wmiobject -list -namespace "root \ Microsoft \ SqlServer \ ServerEvents \ MSSQLSERVER" >> Ошибка: недопустимое пространство имен.

Есть ли хитрость, чтобы запустить это? Нужно ли дополнительно устанавливать STH? Я все еще на SQL 2005.

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 мая 2012

Опубликовано - 05.05.2012: 08: 25: 20

Привет всем,

Мы разработали бесплатную сборку WMI CLR для выполнения запросов WMI в SQL.

например. Это вернет точку монтирования и дисковое пространство

DECLARE @XmlData Xml
--Obtain Windows Services 
select @XmlData=dbo.GetWMI('\\SQL2008WIN2008\root\cimv2', --Machine and WMI class
NULL, --UserName, leave NULL to use current
NULL, --Password, leave NULL to use current 
'select * from win32_volume' --WMI Class
)

SELECT 
tbl.A.value('(DeviceID)[1]','VARCHAR(100)') as DeviceID,
tbl.A.value('(Name)[1]','VARCHAR(200)') as Name,
tbl.A.value('(DriveType)[1]','int') as DriveType,
ISNULL(tbl.A.value('(DriveLetter)[1]','VARCHAR(10)'),'MountPoint') as DriveLetter,
tbl.A.value('(FreeSpace)[1]','bigint')/1024/1024 as FreeSpaceMbytes
FROM @XmlData.nodes('/WMI/Data') tbl(A)

Взгляните на http://micatio.com/sqlwmi.aspx

1 голос
/ 13 января 2010

Использовать параметр имени компьютера.

get-wmiobject -computername Z002 -list -namespace "root\Microsoft\SqlServer\ServerEvents\MSSQLSERVER"

Также помните, что MSSQLSERVER доступен только в том случае, если на сервере есть экземпляр по умолчанию. Если сервер использует именованный экземпляр, вам нужно указать имя экземпляра вместо MSSQLSERVER.

...