PowerShellを使用する際には、データのセットを操作する必要があることがあります。ファイル、ユーザーアカウント、仮想マシンなど、さまざまなオブジェクトを操作します。これらのオブジェクトをコンソールに表示する場合、オブジェクトはスクリーン上を次々にスクロールして表示され、表示方法に関係なく表示されます。しかし、これは修正可能です!PowerShellのGroup-Object
コマンドレットを使用すると、オブジェクトをグループ化することができます。このコマンドレットはSQLのGROUP BYステートメントのように機能します。
PowerShellには、Powershell Group Objectコマンドレットを介してプロパティごとにオブジェクトを要約する方法があります。このコマンドレットを使用すると、スクリプタは一度に多くのオブジェクトプロパティを一覧表示することができます。
同じタイプのオブジェクトのバンチを生成しましょう。これらのオブジェクトは任意のタイプであることができます。ただし、このデモンストレーションでは、Get-Service
コマンドレットが返すSystem.ServiceProcess.ServiceControllerオブジェクトを使用します。
Group-Objectが期待どおりに機能するためには、同じタイプのオブジェクトのみをグループ化することを確認してください。すべてのオブジェクトには同じプロパティがあることが重要です。
ManageEngine ADManager Plusを使用してActive Directory、Exchange、Microsoft 365を管理およびレポートする。 無料トライアルをダウンロード!
パラメータなしでのGroup-Objectの使用
Get-Service
はローカルマシン上のすべてのサービスを返します。ここにはたくさんのサービスがあるため、その状態や起動タイプなどの概要がわかりません。まず、これらのサービスを状態によってグループ化したいと思います。これらのサービスをグループ化するために、すべてのサービスオブジェクトをPowerShellのGroup-Object
コマンドレットにパイプし、Status
プロパティを使用します。
すべてのサービスをPowershell Group Object
にパイプすることで、カウントを取得することができます。大したことではありませんが、便利です。
単一のプロパティでオブジェクトをグループ化する
特定のプロパティ(この場合は状態)でグループ化するには、Group-Object
に対してProperty
パラメーターを使用する必要があります。
これで話が進みます!一度に停止しているサービスと実行中のサービスの数を確認できます。同様のことをStartType
に対しても行うことができます。
Group-Objectの出力をフィルタリングする
これらのグループの1つまたは複数の実際のサービスを見たい場合があるかもしれません。Powershellのグループオブジェクトコマンドで返されるGroup
プロパティを見ることで、これらのオブジェクトを取得できます。Group
オブジェクトには、グループ化されたオブジェクトプロパティの値を持つすべてのサービスが含まれています。サービスの状態でグループ化している場合、Stopped
の状態でフィルタリングした後、Group
オブジェクトを展開してこれらのサービスをすべて表示できます。
複数のプロパティでオブジェクトをグループ化する
単一のプロパティでこのようにオブジェクトをグループ化するだけでなく、複数のプロパティでもグループ化することができます。おそらく、状態と開始タイプに基づいてすべてのサービスを表示したいと思うかもしれません。その場合、Group-Object
のProperty
パラメータに別のプロパティ名を追加するだけです。
追加のプロパティを追加することにより、実質的に「および」のシナリオをいくつでも作成し、必要なだけのプロパティでグループ化することができます。
ManageEngine ADManager Plusを使用して、Active Directory、Exchange、およびMicrosoft 365を管理およびレポートします。無料トライアルをダウンロード!
概要
Group-Object
コマンドレットは、共通のプロパティに基づいてオブジェクトをグループ化するのに役立つコマンドレットです。このようにオブジェクトをグループ化することは、さまざまな方法で役立ちます。 Group-Object
コマンドレットの動作について少し学んでいただくことで、PowerShellスクリプトを改善し、より良いものを作成するためのアイデアを得ていただければと思います!
PowerShellを始めたばかりの方は、PowerShellツールビルディングのミニコースをぜひご覧ください!
Source:
https://adamtheautomator.com/powershell-group-object/