WMIとその新しい兄弟CIMは、環境内のWindowsマシンを管理するために両方を使用できます。しかし、あなたはそれらの違いを知っていますか?私たちが見ている間、私たちに参加してください。
シリーズの以前の記事を必ず読んでください。
- PowerShellでWindowsを自動化する方法を学びます
- PowerShellでオブジェクトの使用方法を学ぶ
- Powershellでの学習フォーマット、フィルタリング、比較
- PowerShellでリモートを使用することを学びます
そして、シリーズの残りの部分を一週間ずっとお楽しみに。
導入
WMIはWindows Management Instrumentationの略です。 「計装」という言葉は、WMIがコンピューターの内部状態に関する情報を取得できるという事実を指します。これは、車のダッシュボード機器が車の内部コンポーネントの状態に関する情報を取得および表示できるのと同様です。
WMIは、マシン内で管理できるコンポーネントを表すクラスを含むリポジトリで構成されています。つまり、WMIにWin32_Batteryクラスがあるからといって、マシンにバッテリーが含まれているという意味ではありません。これらのクラスは、WQLと呼ばれるSQLに非常によく似たクエリ言語を使用して、ローカルまたはネットワーク全体で情報を照会することができます。ただし、WMIは非常に信頼できないことが知られています。これは、主にRPC(リモートプロシージャコール)に基づいており、通信することを選択したポートでクレイジーなことをしているためです。
Windows 8とServer 2012から始めて、WMIは一般的な情報モデルまたはCIMを支持して段階的に段階的に廃止されています。 WMIとCIMの唯一の違いは、使用するトランスポートプロトコルです。 WMIはリモートプロシージャコールを使用してクエリを実行しますが、CIMはHTTPを使用します。これは大きな違いを生むようです。バックエンドでは、彼らはまだ同じ情報のリポジトリと話しています。
WMIを使用します
WMIを介して利用可能な情報を探索する最も簡単で簡単な方法は、無料のWMIオブジェクトブラウザのコピーを入手することです。 私たちはこれが好きです 。ダウンロードしたら、それを起動すると、WMIクラスを閲覧するためのグラフィカルなインターフェイスがあります。
コンピューターのディスク構成について何かを見つけたい場合は、CTRL + Fキーボードの組み合わせを押して検索ボックスを表示し、「LogicalDisk」と入力してEnterを押します。
すぐにこれにより、win32_logicaldiskクラスに移動します。
アプリケーションの下半分には、クラスの2つのインスタンスがあることがわかります。
探しているクラスができたら、PowerShellからのクエリは簡単です。
get -wmiobject -query “select * fromwin32_logicaldisk”
最近、新しいパラメーター化された構文を使用することを好む人々としばらくの間、その構文を見たことはありません。
get-wmiobject –class win32_logicaldisk
ネットワーク上の別のコンピューターから情報を取得する場合は、ComputerNameパラメーターを使用するだけです。
get -wmiobject -class win32_logicaldisk -computername viper – Credential Viper \ Administrator
CIMを使用します
CIMはWindows 8とServer 2012でのみ利用可能であることに留意してください。これは間違いなく進む方法です。
get-ciminstance –classname win32_logicaldisk
また、Get-Ciminstanceを使用する場合は、–ClassNameパラメーターのタブの完了があります。これは、これがMicrosoftの努力が焦点を合わせられることを示しています。
実際、WMIはMicrosoft内の完全に独立したチームによって開発されましたが、その後Powershellを担当する人々に引き継がれました。彼らは、残された混乱をきれいにするのが非常に難しいことに気づいた人たちでした。状況を改善するために、彼らはWMIとCIMをフードの下にWMIとCIMを使用するラッパーCMDLETSを書くことで、より利用できるようにしようとしています。 cmdletがラッパーであるかどうかを確認する唯一の方法は、ドキュメントを見ることです。たとえば、Get-HotFix CMDLETは、ドキュメントに見られるように、win32_quickfixengineeringクラスのラッパーです。
つまり、WMIクエリの代わりにget-fix cmdletを使用してリモートマシンにホットフィックスを取得できます。
get-hotfix –computername localhost
だからあなたはそれを持っています。専用のcmdletがある場合は、常に使用したいと思うことを忘れないでください。CMDLETが存在しない場合はCIMが続きます。最後に、他のすべてが失敗した場合、または環境に古いマシンがある場合は、WMIを使用することをお勧めします。今回はそれがすべてです。もっとパワーシェルの楽しみを教えてください。





