質問する質問する
 

回答済みManagementClassの使い方

  • 2009年3月25日 8:18OTAKA ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    お世話になります。

    ManagementClassクラスとManagementObjectクラスの使用を試みているのですが、
    うまくいきません。

    ManagementClassのインスタンスの生成をした後、GetInstances()のメソッドのコールをしたいのですが、
    メソッドがないとエラーが表示されます。
    確かに生成されたインスタンスオブジェクトには、そのようなメソッドが見つかりませんでした。(get-memberで調査)

    しかし確かに、ManagementClassクラスには、GetInstancesメソッドはあるのですが。。。。

     
    $obj = New-Object system.management.managementclass("root/wmi")
    $obj | get-member

    GetInstancesメソッドがない!!

    何がまちがっているのでしょうか。

回答

すべての返信

  • 2009年3月25日 14:19AzuleanMVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    Googleで"get-member ManagementClass"をキーワードに、ウェブ全体で検索しました。
    http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&num=50&q=powershell+get-member

    Powershell and .Net Object
    http://www.vistax64.com/powershell/32710-powershell-net-object.html

    こちらの記事でお悩みのことは解決するのではないでしょうか。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマークOTAKA 2009年3月27日 0:59
    •  
  • 2009年3月27日 1:00OTAKA ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
     ご返事ありがとうございます。

    参考にさせて頂いたURLから、[psbase]にたどり着け、問題なくメソッドがしようできるようになりましたが
    ありがとうございました。

    powershellはオブジェクト生成時に、型を推測し公開させるメソッド、プロパティが決まるらしいです。
    ただpowershellの推測が間違った場合、psbaseを利用して、メソッド、プロパティへアクセスを行います。
    psbaseは、現状のオブジェクトつまり「そのままの状態」のオブジェクトでアクセスができるみたいです。

    上記のことを踏まえ推測させない方法でオブジェクトを生成してみましたが、だめでした。。。

    $obj = [system.management.managementclass](New-Object -typename system.management.managementclass("root/cimv2","win32_product",$null))

    希望するメソッドやプロパティにアクセスできない場合は、psbaseを利用することがわかったので、
    解決とします。

    ありがとうございました。