3

私は 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 を使用しています。

ありがとう!

4

2 に答える 2

1

computernamenameパラメーターを使用します。

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

また、MSSQLSERVERは、サーバーにデフォルトのインスタンスがある場合にのみ使用できることに注意してください。サーバーが名前付きインスタンスを使用する場合は、MSSQLSERVERの代わりにインスタンス名を指定する必要があります。

于 2010-01-13T17:41:38.667 に答える
1

投稿 - 2012/05/05 : 08:25:20

こんにちは、みんな、

SQL で WMI クエリを実行するための無料の WMI CLR アセンブリを開発しました。

たとえば、これはマウントポイントとドライブスペースを返します

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をご覧ください。

于 2012-05-19T12:42:20.873 に答える