データの並べ替え
PowerShellでは、パイプを通して受け取ったオブジェクトを並べ替えるためSort-Objectコマンドレットがあります。ここでは最新のシステムイベント10件を取得し、EventIDで並べ替えを行ってみましょう。
まずイベントの取得ですが、Get-EventLogコマンドレットを使用します。Get-EventLogコマンドレットには-logNameというパラメータがあります。このパラメータのあとにsystemと記述するとシステムイベントを取得できます。また、applicationと記述するとアプリケーションイベントを取得することができます。
「最新の10件」は-newestパラメータを使用します。-newestのあとに10と書くことで最新の10件のデータを取得することができます。
まずはここまでのコマンドレット(並べ替えの操作なしの)を実行してみましょう。
Get-EventLog -logName system -newest 10
と入力しEnterキーを押してください。
システムログの最新の10件は取得できましたか?
では、この取得結果をeventID順に並べ替えてみましょう。先ほど説明したように並べ替えにはSort-Objectコマンドレットを使用するのですが、このコマンドレットへはパイプを流れてきたオブジェクトを並べ替えるので、次のような記述をするのが一般的です。
Get-EventLog -logName system -newest 10 | Sort-Object eventID
と入力しEnterキーを押してください。
実行結果を見るとわかるとおり昇順での並べ替えです。降順で並べ替えを行うには-descendingパラメータを付加します。
Get-EventLog -logName system -newest 10 | Sort-Object eventID-descending
特定のプロパティを抜き出す
Select-Objectコマンドレットを使用すると、特定のプロパティのみを抜き出すことができます。
Get-ChildItemコマンドレットを実行するとMode、LastWriteTime、Length、Nameプロパティが表示されるのですが、Select-Objectコマンドレットを使用してNameプロパティとLengthプロパティのみを取得してみましょう。
Get-ChildItem *.* | Select-Object Name, Length
と入力しEnterキーを押してください。
NameプロパティとLengthプロパティだけを表示することができたと思います。
今度は、Select-Objectコマンドレットと、先ほど使用したSort-Objectをあわせて使用してみましょう。NameプロパティとLengthプロパティを取得し、Lengthプロパティで並べ替えを行ってみたいと思います。
Get-ChildItem *.* | Select-Object Name, Length | Sort-Object Length
と入力してEnterキーを押してください。
パイプの数が2つになりましたが、1つずつ区切って考えると簡単です。
このようにパイプごとに処理を区切って考えることがポイントです。



-descending

