PowerShell を使用してファイルとフォルダーをフィルター処理する

Marion Paul Kenneth Mendoza 2023年1月30日
  1. PowerShell の Get-ChildItem コマンドレットを使用してファイルをフィルター処理する
  2. Get-ChildItem エイリアス
  3. PowerShell の Get-ChildItem コマンドレットを使用してサブディレクトリ内のすべてのファイルを取得する
  4. PowerShell で Get-ChildItem コマンドレットを使用して特定の条件でファイルをフィルター処理する
PowerShell を使用してファイルとフォルダーをフィルター処理する

特定の場所またはディレクトリ内にファイルが存在するかどうかを確認する必要がある場合があります。従来のコマンド dir を使用することはできますが、特定のファイルをエクスポートするだけでは不十分です。このユースケースでは、Windows PowerShell の Get-ChildItem コマンドレットを使用できます。

この記事では、ディレクトリ内のすべてのアイテムを取得し、そのフィルタースイッチパラメーターを利用するために使用する PowerShell Get-ChildItem コマンドレットについて説明します。

Windows PowerShell の Get-ChildItem コマンドレットは、特定の場所またはディレクトリにある子アイテムを取得します。たとえば、コマンドレットで指定された場所は、ファイルシステムディレクトリ、レジストリ、または証明書ストアです。また、言及されている子アイテムは、別のディレクトリ、サブフォルダ、またはファイルのいずれかです。

Get-ChildItem -Path C:\Temp

上記のコマンドで、Get-ChildItem は、-Path パラメーターを使用して指定されたパスから子アイテムを取得します。

Get-ChildItem コマンドレットを実行すると、PowerShell コンソールに、ファイル、ディレクトリとその ModeLastWriteTimeLength(ファイルサイズ)、および Name プロパティが表示されます。

Mode                 LastWriteTime         Length Name                                
----                 -------------         ------ ----
d----l        18/01/2022   8:52 pm                Windows PowerShell
d----l        20/12/2021   3:36 pm                Zoom
-a---l        30/12/2020   3:23 pm          (151) backup phrase.txt
-a---l        17/06/2021   3:13 am       (410049) CEF1750.pdf
-a---l        16/05/2020   3:32 am          (677) default.cpu1
-a---l        21/08/2019   9:06 am         (2240) Default.rdp
-a---l        26/05/2021   8:24 am        (63399) e-sig.jpg
-a---l        09/03/2020  10:48 pm          (143) fan config.sfsm
-a---l        19/09/2020  12:07 pm    (279515089) MCSA.rar

PowerShell の Get-ChildItem コマンドレットを使用してファイルをフィルター処理する

-File スイッチパラメータを使用して、パスまたはディレクトリ内のファイルのみを返す場合があります。

サンプルコード:

Get-ChildItem -Path C:\Temp -File

出力:

Mode                 LastWriteTime         Length Name                                
----                 -------------         ------ ----
-a---l        30/12/2020   3:23 pm          (151) backup phrase.txt 
-a---l        17/06/2021   3:13 am       (410049) CEF1750.pdf
-a---l        16/05/2020   3:32 am          (677) default.cpu1
-a---l        21/08/2019   9:06 am         (2240) Default.rdp
-a---l        26/05/2021   8:24 am        (63399) e-sig.jpg
-a---l        09/03/2020  10:48 pm          (143) fan config.sfsm
-a---l        19/09/2020  12:07 pm    (279515089) MCSA.rar

Get-ChildItem エイリアス

Windows PowerShell は、Get-ChildItem コマンドレットにデフォルトの組み込みエイリアス gci を使用します。以下のスニペットの例のように、コマンドレットの代わりにエイリアスを使用して、より高速でシームレスなスクリプトを作成できます。

サンプルコード:

gci -Path C:\Temp -File

PowerShell の Get-ChildItem コマンドレットを使用してサブディレクトリ内のすべてのファイルを取得する

ディレクトリとサブディレクトリ内のすべてのファイルを取得する場合は、-Recurse スイッチパラメータを使用します。

サンプルコード:

gci -Path C:\Temp -Recurse - Force -File
-Force パラメーターを使用すると、コマンドレットは、システムファイルや隠しファイルなど、ユーザーがアクセスできないアイテムを取得できます。Force パラメーターは、セキュリティ制限をオーバーライドしません。実装はプロバイダーによって異なります。

PowerShell で Get-ChildItem コマンドレットを使用して特定の条件でファイルをフィルター処理する

-Filter パラメーターを使用すると、単一の式を使用して結果をフィルターで除外できます。-Filter パラメータは、現在の作業ディレクトリを使用するため、-Path パラメータを必要としません。

サンプルコード:

gci -Filter C:\Temp\* -Filter *.txt 

複数の条件を受け入れる -Include スイッチパラメーターを使用することもできます。これは、-Filter パラメーターの優れた利点です。ただし、-Include パラメーターでは、式に -Path パラメーターが含まれている必要があることに注意してください。

サンプルコード:

gci -Path C:\Temp\* -File -Include CEF*.pdf, *.txt 

複数の条件を受け入れることを除けば、-Include パラメーターは正規表現でうまく機能するため、これは -Filter パラメーターよりも用途の広い方法になります。

出力:

Mode                 LastWriteTime         Length Name                                
----                 -------------         ------ ----
-a---l        30/12/2020   3:23 pm          (151) backup phrase.txt
-a---l        17/06/2021   3:13 am       (410049) CEF1750.pdf
-Include スイッチパラメーターを使用する場合、パスの最後にワイルドカードアスタリスク(*)を含める必要があります。このワイルドカードは、-Include パラメーターで定義された特定の拡張子を持つすべてのパスの子アイテムを照会していることを示します。
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

関連記事 - PowerShell File

関連記事 - PowerShell Directory