• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WSHについて教えてください。)

WMIクエリでのコレクション要素のプロパティ参照方法

このQ&Aのポイント
  • WSHを使用してWMIクエリの結果から最初の要素のプロパティを取得する方法について説明します。
  • For Each文を使用せずに、WMIクエリの結果のコレクションの最初の要素のプロパティを取得する方法について解説します。
  • WMIクエリの結果のコレクションから最初の要素のプロパティを取得するための効率的なコーディング方法を紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

microhideta
質問者

お礼

ご回答ありがとうございます。 おかげさまで、目的を達することができました! VBScriptでは、以下のようにしました。 理屈はちっともわかりませんが、後々教えていただいたリンクを熟読して、理解したいと思います! Set objWMIService = GetObject("winmgmts:\\.\root\cimv2:Win32_NetworkConnection.Name=""\\\\ComputerName\\ShareName (V:)""") Wscript.Echo objWMIService.LocalName 本当に助かりました。ありがとうございました!

その他の回答 (2)

回答No.2

Excel の VBA にて Microsoft WMI Scripting V1.2 Library を参照設定に追加してみたところ、 colItems.Item( strObjectPath As String, [iFlags As Long] ) というメソッドがあることがわかりました。 おそらく、iFlags は省略可能だと思います。 適切な strObjectPath を与えれば、For Each を使用しなくても直接 objItem を取得できるのだと思いますが、残念ながら strObjectPath にどういう文字列を与えればよいのかまではわかりませんでした。

microhideta
質問者

お礼

ご回答ありがとうございました。 temtecomai2さんのご返信で、無事解決することができました。 今後ともよろしくお願いいたします。

回答No.1

試していないのですが、 colItems.Items(1).LocalName ではダメでしょうか。 もしかすると colItems.Items(0).LocalName かも。

microhideta
質問者

補足

回答とてもありがとうございます! 実行すると以下のようなメッセージが表示されてしまいます。 回答をいただいたときに、おおお!なるほど!!と思ったのですが・・・。 エラーの通り、WMIのコレクション(colItems)にはItemsプロパティは存在しないようです。 エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。:'colItems.Items' コード: 800A01B6 ソース: Microsoft VBScript 実行時エラー 取り急ぎ、報告まで。

関連するQ&A