- ベストアンサー
WMIクエリでのコレクション要素のプロパティ参照方法
- WSHを使用してWMIクエリの結果から最初の要素のプロパティを取得する方法について説明します。
- For Each文を使用せずに、WMIクエリの結果のコレクションの最初の要素のプロパティを取得する方法について解説します。
- WMIクエリの結果のコレクションから最初の要素のプロパティを取得するための効率的なコーディング方法を紹介します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2 さんと同様、Excel VBA にて Microsoft WMI Scripting V1.2 Library を使ってみた。 Dim locatorObject As WbemScripting.SWbemLocator Dim serviceObject As WbemScripting.SWbemServices Set locatorObject = New WbemScripting.SWbemLocator Set serviceObject = locatorObject.ConnectServer serviceObject.Security_.ImpersonationLevel = 3 Dim connections As WbemScripting.SWbemObjectSet Dim connection As WbemScripting.SWbemObject Set connections = serviceObject.ExecQuery("SELECT * FROM Win32_NetworkConnection WHERE LocalName='V:'") Debug.Print connections.Item("\\ホスト名\root\cimv2:Win32_NetworkConnection.Name=""\\\\サーバ名\\共有名 (V:)""").LocalName 結果 こんな書き方しても誰も得しない。 SWbemServiceObject の Get メソッドなら SWbemObject 単体を得られるが、書き方はこうなる。 Dim connection As WbemScripting.SWbemObject Set connection = serviceObject.Get("\\SSD008\root\cimv2:Win32_NetworkConnection.Name=""\\\\afs001\\Home (W:)""") <MSDN WMI スクリプト入門 : 第 3 部> http://msdn.microsoft.com/ja-jp/library/ms974547.aspx
その他の回答 (2)
- tsukasa-12r
- ベストアンサー率65% (358/549)
Excel の VBA にて Microsoft WMI Scripting V1.2 Library を参照設定に追加してみたところ、 colItems.Item( strObjectPath As String, [iFlags As Long] ) というメソッドがあることがわかりました。 おそらく、iFlags は省略可能だと思います。 適切な strObjectPath を与えれば、For Each を使用しなくても直接 objItem を取得できるのだと思いますが、残念ながら strObjectPath にどういう文字列を与えればよいのかまではわかりませんでした。
お礼
ご回答ありがとうございました。 temtecomai2さんのご返信で、無事解決することができました。 今後ともよろしくお願いいたします。
- tsukasa-12r
- ベストアンサー率65% (358/549)
試していないのですが、 colItems.Items(1).LocalName ではダメでしょうか。 もしかすると colItems.Items(0).LocalName かも。
補足
回答とてもありがとうございます! 実行すると以下のようなメッセージが表示されてしまいます。 回答をいただいたときに、おおお!なるほど!!と思ったのですが・・・。 エラーの通り、WMIのコレクション(colItems)にはItemsプロパティは存在しないようです。 エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。:'colItems.Items' コード: 800A01B6 ソース: Microsoft VBScript 実行時エラー 取り急ぎ、報告まで。
お礼
ご回答ありがとうございます。 おかげさまで、目的を達することができました! VBScriptでは、以下のようにしました。 理屈はちっともわかりませんが、後々教えていただいたリンクを熟読して、理解したいと思います! Set objWMIService = GetObject("winmgmts:\\.\root\cimv2:Win32_NetworkConnection.Name=""\\\\ComputerName\\ShareName (V:)""") Wscript.Echo objWMIService.LocalName 本当に助かりました。ありがとうございました!