WMIの概要とPowerShellの

WMIとは何ですか

WMIは、コンピュータシステムから、多くの情報を収集することができます。しかし、時には、この情報は他の文書でも友好的ではないが、理解することは容易ではありません。WMIは、外部の技術、それと対話するためのPowerShell唯一のインタフェースです。

トップレベルでは、WMIは名前空間(名前空間)に編成されています。名前空間は、特定の製品や技術のクリップに関連したファイルと考えることができます。たとえば、「ルートの\ CIMV2」、名前空間はすべてのWindowsオペレーティングシステムとコンピュータハードウェアの情報が含まれています。「ルート\ MicrosoftDNSの」名前空間がされる(あなたがその役割がコンピュータにインストールされていると仮定します)DNSサーバに関するすべての情報が含まれています。

名前空間に、WMIクラスのセットに分割され、各ユニットは、WMIクエリを管理するために使用されます。たとえば、「ルートの\ SecurityCenterの」の「アンチウイルス・プロダクト」カテゴリ情報は、アンチスパイウェアソフトウェアを保持するように設計された、「のWin32_LogicalDisk」クラスの「ルートの\ CIMV2」の論理ディスク情報を保持するように設計されています。しかし、コンピュータ上のクラスがあっても、コンピュータが実際にコンポーネントがインストールされている対応することを意味するものではありません。例えば、関係なく、テープドライブがインストールされているかどうかの。「Win32_TapeDrive」カテゴリでは、Windowsのすべてのバージョンに存在します。いないすべてのコンピュータが同じWMI名前空間やクラスが含まれています。

WMIの将来

ほとんどのWMIのライフサイクルでは、Microsoftが(最近は改善された)内部統制にあまり焦点を置かないであろう。マイクロソフトWMIは、プログラミング標準のシリーズを開発しましたが、多かれ少なかれ製品群は、達成するためにどのようにして、その種の文書かどうかを集中します。結果は、WMIが混乱なることです。

など、「WMIコマンドレット」は、いわゆると「-WmiObjectコマンドの取得」「-WmiMethodを起動します」 - これらは、彼らはまだ動作することができることを意味し、従来のコマンドですが、Microsoftが開発にそれらを追跡しません。彼らは、ファイアウォールを経由して、ファイアウォールのサポートを確認する状態で(実際には非常に困難)のみ、つまり、リモート・プロシージャと対話する(RPC)を呼び出します。

こうした「ゲット・CimInstance」と「起動-CimMethod」として「CIMコマンドレット」の新バージョン、 - 彼らは、「WMIコマンドレット」の旧バージョンに多かれ少なかれ同等ですが、彼らは(WS-MANを通じて、Windowsリモート管理サービスによって実装)の相互作用、オリジナルのRPCを交換してください。

2012 R2とWindowsサーバーの更新されたバージョンでは、WMIの古いバージョンではデフォルトで無効になっていますので、可能性としてCIMを使用します。また、CIMコマンドレットは、したがって、古いマシンと通信する際に、古いRPC(またはDCOM)プロトコルを使用することができ、あなたはまた、唯一のCIMコマンドレットを使用することができます。

あなたは構文を使用する必要がありますので、WMIフィルタリングの実装では、フィルタリングの構文はPowerShellの、WMIで扱うのではなく、WMIに渡され、内蔵のPowerShellの演算子を交換する指定。

Get-WmiObject win32_process -filter {name='notepad.exe'} |Invoke-WmiMethod -Name Terminate

WMIの(わずかな)利点

必要なWMI RPCネットワーク通信がファイアウォールに浸透することは困難であるが、コンピュータWMIの最大数は、(現在のために)適用することができますが、CIMはより単純なWS-MAN通信を更新する必要がありますが、デフォルトではWindowsの旧バージョンでは、とWS-MANをインストールしていません。

シリアルおよびパラレル実行のWMI

Get-WmiObjectコマンドは、1つまたは複数のリモートコンピュータに接続するためのコマンドが、シリアル方式を通じて実施、効率が比較的低いです。
注意:gwmiは、Get-WmiObjectコマンド省略形であります

gwmi -class win32_bios -computer server-r2,localhost | format-table @{label='ComputerName';expression={$_.__SERVER}},
@{label='BIOSSerial';expression={$_.SerialNumber}},
@{label='OSBuild';expression= {gwmi -class \win32_operatingsystem -computer $_.__SERVER | select-object -expand BuildNumber}} -autosize

-ScriptBlockパラメータで指定された(またはパラメータが、 -コマンド別名である)任意のコマンドが指定された各コンピュータに並列に送信されます。(あなたは-ThrottleLimitパラメータは、より多くのまたはより少ないコンピュータへの同時アクセスを可能に変更しない限り)あなたは同時にあなたは32以上のコンピュータ名を指定するとき、最初の32台のコンピュータがコマンドを実行するために開始され、32台までのコンピュータをアクセスすることができます。フロントエンドは、約32コンピュータである場合、コンピュータは、残りのコマンドの実行を開始することができます。最後は、すべてのコンピュータ上で実行されたときに加えて、上側の親ジョブは、完全な状態に戻ります。
注:取得-CimInstanceは、Get-WmiObjectコマンド新しい文言であります

invoke-command -ScriptBlock { Get-CimInstance -ClassName win32_process } -ComputerName WIN8 -Credential DOMAIN\Administrator

注:この記事は参考書「PowerShellの戦闘ガイド第三版」の一部であり、

詳細については、を参照してください。
WMIの概要とPowerShellの

おすすめ

転載: blog.51cto.com/543925535/2438751