This is part of the on-going blog series written by Adam Gordon. 毎週、Adam は PowerShell コマンドを紹介し、それぞれのコマンドをいつ、どのように使用するかを説明します。 今週は、Where-Object を取り上げます。
When to use Where-Object
Where-Object コマンドレットは、渡されたオブジェクトのコレクションから特定のプロパティ値を持つオブジェクトを選択します。
Windows PowerShell 3.0 以降では、WhereObject コマンドを構築する方法が 2 種類存在します。 スクリプト ブロックを使用して、プロパティ名、比較演算子、およびプロパティ値を指定することができます。 Where-Objectはスクリプトブロックのステートメントが真であるすべてのオブジェクトを返します。
Where-Objectの使い方
停止したサービスを取得する。
(1st) Get-Service | Where-Object {$_.Status -eq “Stopped”}
(2nd) Get-Service | where Status -eq “Stopped”
これらのコマンドは、現在停止中のすべてのサービス一覧を取得します。
自動変数 $_ は Where-Object コマンドレットに渡された各オブジェクトを表します。
(1)コマンドはスクリプトブロック形式、(2)コマンドは比較文形式を使用します。
作業セットに基づいてプロセスを取得します:
Get-Process | Where-Object {$_.Object {$_.Object {$_.Object {$_.Object }}は、Where-Objectコマンドレットに渡される各オブジェクトを表します。WorkingSet -GT 25000*1024}
Get-Process | Where-Object WorkingSet -GT (25000*1024)
これらのコマンドは、25000 キロバイト (KB) 以上の作業セットを持つプロセスの一覧を表示します。
WorkingSet プロパティの値はバイトで格納されるため、25000 の値は 1,024 倍されます。
スクリプト ブロックとステートメント構文は同等で、交換して使用できます。
比較ステートメントの形式を使用します。
(1st) Get-Process | Where-Object -Property Handles -GE -Value 1000
(2nd) Get-Process | where Handles -GE 1000
この例は、Where-Object コマンドレットの新しい比較ステートメント形式の使用方法です。
(1st) コマンドは比較ステートメントの書式を使用しています。 このコマンドでは、エイリアスは使用されず、すべてのパラメーターはパラメーター名を含みます。
(2)コマンドは、比較コマンドの形式をより自然に使用したものです。 where エイリアスは Where-Object コマンドレット名に置き換えられ、すべてのオプションのパラメーター名は省略されます。
複数の条件を使用する:
Get-Module -ListAvailable | where {($_.Name -notlike “Microsoft*” -and $_.Name -notlike “PS*”) -and $_.HelpInfoUri}
このコマンドは Get-Module コマンドレットの -ListAvailable パラメータを使ってコンピューター上のすべてのモジュールを取得するものです。
比較文は And 論理演算子によって接続されます。
例ではスクリプト ブロック コマンド形式を使用しています。
NOTE: And や Or などの論理演算子はスクリプト ブロック内のみで有効です。 Where-Object コマンドの比較ステートメント形式では使用できません。
先週のコマンドを学びます。 Get-WinEvent.
PowerShell のトレーニングが必要ですか? ITProTV の PowerShell オンライン IT トレーニング コースをご覧ください。