PowerShellを使用してコンピューター情報を取得するオタク学校
WMIとその新しい兄弟CIMの両方を使用して、環境内のWindowsマシンを管理できます。しかし、あなたはそれらの違いを知っていますか?私たちが見ているように私たちに参加.
シリーズの前の記事を必ず読んでください。
- PowerShellを使用してWindowsを自動化する方法を学ぶ
- PowerShellでコマンドレットを使用する方法
- PowerShellでオブジェクトを使用する方法を学ぶ
- PowerShellでの書式設定、フィルタリング、および比較の学習
- PowerShellでリモート処理を使用する方法を学ぶ
そして、シリーズの残りの部分を一週間中お楽しみに.
前書き
WMIはWindows Management Instrumentationの略です。 「計装」という言葉は、車内のダッシュボード計器が車内部品の状態に関する情報を取得して表示できるのと同じように、WMIを使用してコンピュータの内部状態に関する情報を取得できることを意味します。.
WMIは、あなたのマシンで管理できるコンポーネントを表すクラスを含むリポジトリから構成されています。つまり、WMIにWin32_Batteryクラスがあるからといって、お使いのマシンにバッテリが搭載されているとは限りません。これらのクラスは、WQLと呼ばれるSQLと非常によく似たクエリ言語を使用して、ローカルで、またはネットワーク全体で情報のクエリを実行できます。しかし、WMIは非常に信頼性が低いことが知られています。これは主にRPC(Remote Procedure Calls)に基づいているため、通信することを選択したポートに対していくつかの狂ったことをします。.
Windows 8とServer 2012以降、WMIはCommon Information Model(CIM)の略で廃止される予定です。 WMIとCIMの唯一の違いは、それらが使用するトランスポートプロトコルです。 WMIはリモートプロシージャコールを使用してクエリを実行しますが、CIMはHTTPを使用します。これは大きな違いを生み出すようです。バックエンドでは、まだ同じ情報リポジトリと話しています。.
WMIを使用する
WMIを介してあなたに利用可能な情報を探索する最も早くて最も簡単な方法はどんな無料のWMIオブジェクトブラウザのコピーをつかむことです。私たちはこれが好きです。ダウンロードしたら、それを起動すると、WMIクラスを閲覧するためのグラフィカルインターフェイスが表示されます。.
コンピュータのディスク構成について知りたい場合は、Ctrl + Fキーボードの組み合わせを押して検索ボックスを表示し、次に「logicaldisk」と入力してEnterキーを押します。.
すぐにこれはWin32_LogicalDiskクラスに連れて行くでしょう.
アプリケーションの下半分には、クラスのインスタンスが2つあることがわかります。.
探しているクラスが完成したら、PowerShellから問い合わせるのは簡単です。.
Get-WmiObject-Query“ SELECT * FROM Win32_LogicalDisk”
私はしばらくの間その構文を見たことがありません最近の人々と新しいパラメータ化された構文の使用を好む人たちと.
Get-WmiObject - クラスWin32_LogicalDisk
ネットワーク上の他のコンピュータから情報を取得したい場合は、ComputerNameパラメータを使用することができます。.
Get-WmiObject - クラスWin32_LogicalDisk - コンピューター名Viper - クレデンシャルviper \ administrator
CIMを使う
CIMはWindows 8およびServer 2012でのみ利用可能であることを念頭に置いて、これを進めることは間違いなく進むべき道です.
Get-CimInstance -ClassName Win32_LogicalDisk
Get-CimInstanceを使用する場合、-ClassNameパラメーターのタブ補完もあります。これは、今後、これがマイクロソフトの取り組みが焦点となるところであることを示しています。.
実際、WMIはMicrosoft内の完全に別のチームによって開発されましたが、その後PowerShellを担当する人々によって引き継がれました。彼らは、WMIが残した混乱を一掃するのは非常に困難になるだろうと気づいた人たちでした。状況を改善するための試みとして、彼らはフードの下にWMIとCIMを使用するラッパーコマンドレットを書くことによってWMIとCIMをより利用可能にしようとしています。コマンドレットがラッパーであるかどうかを確認する唯一の方法は、ドキュメントを見ることです。たとえば、ドキュメントに記載されているように、Get-HotfixコマンドレットはWin32_QuickFixEngineeringクラスのラッパーです。.
つまり、WMIクエリの代わりにGet-HotFixコマンドレットを使用して、リモートコンピュータの修正プログラムを取得できます。.
Get-HotFix - コンピュータ名ローカルホスト
それであなたはそれを持っています。専用のコマンドレットがある場合は、常にそれを使用することをお勧めします。コマンドレットが存在しない場合は、CIMを続けて使用します。最後に、他の方法がすべて失敗した場合、または環境内に古いマシンがある場合は、WMIを使用します。今回はこれですべてです。明日はもっとPowerShellの楽しみのためにお会いしましょう.