我正在玩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”>>工作!
在我的Adminmachine上:
get-wmiobject -list -namespace“root \ Microsoft \ SqlServer”>>作品!
get-wmiobject -list -namespace“root \ Microsoft \ SqlServer \ ServerEvents \ MSSQLSERVER”>>错误:名称空间无效。
有没有让这个运行的技巧?我需要额外安装吗? 我还在SQL 2005上。
谢谢!
答案 0 :(得分:1)
使用computername name参数。
get-wmiobject -computername Z002 -list -namespace "root\Microsoft\SqlServer\ServerEvents\MSSQLSERVER"
另请注意,MSSQLSERVER仅在服务器具有默认实例时可用。如果服务器使用命名实例,则需要指定实例名称而不是MSSQLSERVER。
答案 1 :(得分:1)
大家好,
我们开发了一个免费的WMI CLR程序集来在SQL中执行WMI查询。
e.g。这将返回挂载点和驱动器空间
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)