PowerShell を使用してファイルとフォルダーをフィルター処理する
-
PowerShell の
Get-ChildItemコマンドレットを使用してファイルをフィルター処理する -
Get-ChildItemエイリアス -
PowerShell の
Get-ChildItemコマンドレットを使用してサブディレクトリ内のすべてのファイルを取得する -
PowerShell で
Get-ChildItemコマンドレットを使用して特定の条件でファイルをフィルター処理する
特定の場所またはディレクトリ内にファイルが存在するかどうかを確認する必要がある場合があります。従来のコマンド dir を使用することはできますが、特定のファイルをエクスポートするだけでは不十分です。このユースケースでは、Windows PowerShell の Get-ChildItem コマンドレットを使用できます。
この記事では、ディレクトリ内のすべてのアイテムを取得し、そのフィルタースイッチパラメーターを利用するために使用する PowerShell Get-ChildItem コマンドレットについて説明します。
Windows PowerShell の Get-ChildItem コマンドレットは、特定の場所またはディレクトリにある子アイテムを取得します。たとえば、コマンドレットで指定された場所は、ファイルシステムディレクトリ、レジストリ、または証明書ストアです。また、言及されている子アイテムは、別のディレクトリ、サブフォルダ、またはファイルのいずれかです。
Get-ChildItem -Path C:\Temp
上記のコマンドで、Get-ChildItem は、-Path パラメーターを使用して指定されたパスから子アイテムを取得します。
Get-ChildItem コマンドレットを実行すると、PowerShell コンソールに、ファイル、ディレクトリとその Mode、LastWriteTime、Length(ファイルサイズ)、および 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn関連記事 - PowerShell File
- PowerShell で FTP を使用してファイルをアップロードする方法
- PowerShell でファイルバージョンを取得する方法
- Windows PowerShell を使用してテキストファイルを作成する方法
- PowerShell を使用してファイルにデータを追加する方法
- PowerShell で CSV ファイルを 1 行ずつ読み取る
- PowerShell でのファイルの最終書き込み時刻のクエリ
