PowerShell: Get-ItemとGet-ChildItemの違い

PowerShellのコマンドレットに「Get-Item」と「Get-ChildItem」があります。 似ているようで違う2つのコマンドレットの違いについて解説します。

コマンドレット概要
Get-Itemアイテムを取得
Get-ChildItem子アイテムを取得

Get-ItemとGet-ChildItemの違いを抑えるためには、 Item(アイテム)とChildItem(子アイテム)の違いを知る必要があります。

アイテムとはファイルやフォルダの事です。 子アイテムとはフォルダの下にあるファイルやサブフォルダの事です (説明をわかりやすくするために、 レジストリキーやレジストリサブキーについては省略します)。

下のツリー図のようにアイテムの下に子アイテムがあります。

アイテム(コンテナ)
├ 子アイテム
└ 子アイテム

Get-Itemはアイテムそのものを取得するので、 -Pathとして指定するパスはフォルダやファイルになります。
以下はGet-Itemの実行例です。 指定したアイテム(この場合はファイル)の情報が取得できます。

PS D:\test\powershell> Get-Item test1.ps1

    Directory: D:\test\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2022/04/18     4:12             23 test1.ps1

一方、Get-ChildItemは子アイテムを取得するので、 指定するパスはフォルダ(親フォルダ)になります。
以下はGet-ChildItemで実行例です。 指定したフォルダ(この場合はカレントディレクトリ)に含まれる フォルダやファイルの情報が取得できます。

PS D:\test\powershell> Get-ChildItem . 

    Directory: D:\test\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2022/02/14     3:11                f1
-a---          2022/02/18     4:08             17 test.txt
-a---          2022/04/18     4:12             23 test1.ps1

このように、 ファイルやフォルダ等のアイテムそのものの情報を知りたい場合はGet-Itemを使用し、 フォルダに含まれるサブフォルダやファイルの一覧情報を知りたい場合は Get-ChildItemを使います。

アイテムそのものの情報(プロパティ)を知りたいという機会は あまりないでしょうから、 Get-ItemよりもGet-ChildItemの方が使用頻度は高くなります。

PowerShell