Get-ChildItem

1 つ以上の指定された場所から項目および子項目を取得します。

構文

Get-ChildItem
   [[-Path] <string[]>]
   [[-Filter] <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Recurse]
   [-Depth <uint32>]
   [-Force]
   [-Name]
   [-Attributes <FlagsExpression[FileAttributes]>]
   [-FollowSymlink]
   [-Directory]
   [-File]
   [-Hidden]
   [-ReadOnly]
   [-System]
   [<CommonParameters>]
Get-ChildItem
   [[-Filter] <string>]
   -LiteralPath <string[]>
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Recurse]
   [-Depth <uint32>]
   [-Force]
   [-Name]
   [-Attributes <FlagsExpression[FileAttributes]>]
   [-FollowSymlink]
   [-Directory]
   [-File]
   [-Hidden]
   [-ReadOnly]
   [-System]
   [<CommonParameters>]

説明

コマンドレットは Get-ChildItem 、指定された 1 つ以上の場所にある項目を取得します。 項目がコンテナーの場合は、コンテナーの中にある項目 (子項目) を取得します。 Recurse パラメーターを使用すると、すべての子コンテナー内の項目を取得し、Depth パラメーターを使用して再帰するレベルの数を制限できます。

Get-ChildItem は空のディレクトリを表示しません。 コマンドに Get-ChildItemDepth パラメーターまたは Recurse パラメーターが含まれている場合、空のディレクトリは出力に含まれません。

場所は PowerShell プロバイダーによって公開されます Get-ChildItem 。 場所には、ファイル システム ディレクトリ、レジストリ ハイブ、または証明書ストアを指定できます。 詳細については、「about_Providers」を参照してください。

例 1: ファイル システム ディレクトリから子項目を取得する

この例では、ファイル システム ディレクトリから子項目を取得します。 ファイル名とサブディレクトリ名が表示されます。 空の場所の場合、コマンドは出力を返せず、PowerShell プロンプトに戻ります。

このコマンドレットでは Get-ChildItemPath パラメーターを使用してディレクトリを指定します C:\TestGet-ChildItem では、PowerShell コンソールにファイルとディレクトリが表示されます。

Get-ChildItem -Path C:\Test

Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     08:29                Logs
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-a----         2/1/2019     08:43            183 CreateTestFile.ps1
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

既定Get-ChildItemでは、モード (属性)、LastWriteTime、ファイル サイズ (長さ)、アイテムの名前が一覧表示されます。 Mode プロパティの文字は、次のように解釈できます。

  • l (リンク)
  • d (ディレクトリ)
  • a (アーカイブ)
  • r (読み取り専用)
  • h (非表示)
  • s (システム)。

モード フラグの詳細については、「 about_Filesystem_Provider」を参照してください。

例 2: ディレクトリ内の子項目名を取得する

この例では、ディレクトリ内の項目の名前のみを一覧表示します。

このコマンドレットでは Get-ChildItemPath パラメーターを使用してディレクトリを指定します C:\TestName パラメーターは、指定したパスのファイル名またはディレクトリ名のみを返します。

Get-ChildItem -Path C:\Test -Name

Logs
anotherfile.txt
Command.txt
CreateTestFile.ps1
ReadOnlyFile.txt

例 3: 現在のディレクトリとサブディレクトリ内の子項目を取得する

次の使用例は 、現在の ディレクトリとそのサブディレクトリにある.txtファイルを表示します。

Get-ChildItem -Path C:\Test\*.txt -Recurse -Force

Directory: C:\Test\Logs\Adirectory

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 Afile4.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-a----        2/13/2019     13:26             20 LogFile4.txt

    Directory: C:\Test\Logs\Backup

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 ATextFile.txt
-a----        2/12/2019     15:50             20 LogFile3.txt

    Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 Afile.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-a----        2/13/2019     13:26             20 LogFile1.txt

    Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

このコマンドレットでは Get-ChildItemPath パラメーターを使用して指定 C:\Test\*.txtします。 Path では、アスタリスク (*) ワイルドカードを使用して、ファイル名拡張子 .txtを持つすべてのファイルを指定します。 Recurse パラメーターは、ディレクトリ: 見出しに示すように、Pathディレクトリのサブディレクトリを検索します。 Force パラメーターには、h モードの隠しファイルなどhiddenfile.txt、非表示のファイルが表示されます。

例 4: Include パラメーターを使用して子項目を取得する

この例 Get-ChildItem では 、Include パラメーターを使用して、 Path パラメーターで指定されたディレクトリから特定の項目を検索します。

# When using the -Include parameter, if you don't include an asterisk in the path
# the command returns no output.
Get-ChildItem -Path C:\Test\ -Include *.txt



Get-ChildItem -Path C:\Test\* -Include *.txt

Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

このコマンドレットでは Get-ChildItemPath パラメーターを使用してディレクトリ C:\Test を指定します。 Path パラメーターには、ディレクトリの内容を指定するための末尾のアスタリスク (*) ワイルドカードが含まれています。 Include パラメーターでは、アスタリスク (*) ワイルドカードを使用して、ファイル名拡張子が.txtのすべてのファイルを指定します。

Include パラメーターを使用する場合、Path パラメーターには、ディレクトリの内容を指定するために末尾のアスタリスク (*) ワイルドカードが必要です。 たとえば、-Path C:\Test\* のようにします。

  • Recurse パラメーターがコマンドに追加された場合、Path パラメーターの末尾のアスタリスク (*) は省略可能です。 Recurse パラメーターは、Path ディレクトリとそのサブディレクトリから項目を取得します。 たとえば、-Path C:\Test\ -Recurse -Include *.txt のように指定します。
  • Path パラメーターに末尾のアスタリスク (*) が含まれていない場合、コマンドは出力を返せず、PowerShell プロンプトに戻ります。 たとえば、-Path C:\Test\ のようにします。

例 5: Exclude パラメーターを使用して子項目を取得する

この例の出力は、ディレクトリ C:\Test\Logs の内容を示しています。 出力は、 Exclude パラメーターと Recurse パラメーターを使用する他のコマンドのリファレンスです。

Get-ChildItem -Path C:\Test\Logs

Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     13:21                Adirectory
d-----        2/15/2019     08:28                AnEmptyDirectory
d-----        2/15/2019     13:21                Backup
-a----        2/12/2019     16:16             20 Afile.txt
-a----        2/13/2019     13:26             20 LogFile1.txt
-a----        2/12/2019     16:24             23 systemlog1.log

Get-ChildItem -Path C:\Test\Logs\* -Exclude A*

Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     13:21                Backup
-a----        2/13/2019     13:26             20 LogFile1.txt
-a----        2/12/2019     16:24             23 systemlog1.log

このコマンドレットでは Get-ChildItemPath パラメーターを使用してディレクトリを指定します C:\Test\LogsExclude パラメーターは、アスタリスク (*) ワイルドカードを使用して、A または a で始まるファイルまたはディレクトリを出力から除外することを指定します。

Exclude パラメーターを使用する場合、Path パラメーターの末尾のアスタリスク (*) は省略可能です。  たとえば、-Path C:\Test\Logs または -Path C:\Test\Logs\* です。

  • Path パラメーターに末尾のアスタリスク (*) が含まれていない場合は、Path パラメーターの内容が表示されます。 例外は、 Exclude パラメーターの値と一致するファイル名またはサブディレクトリ名です。
  • Path パラメーターに末尾のアスタリスク (*) が含まれている場合、コマンドは Path パラメーターのサブディレクトリに繰り返し入ります。 例外は、 Exclude パラメーターの値と一致するファイル名またはサブディレクトリ名です。
  • Recurse パラメーターがコマンドに追加された場合、Path パラメーターに末尾のアスタリスク (*) が含まれているかどうかにかかわらず、再帰出力は同じです。

例 6: レジストリ ハイブからレジストリ キーを取得する

この例では、すべてのレジストリ キーを取得します HKEY_LOCAL_MACHINE\HARDWARE

Get-ChildItem、Path パラメーターを使用してレジストリ キーを指定します HKLM:\HARDWARE。 Hive のパスと最上位レベルのレジストリ キーが PowerShell コンソールに表示されます。

詳細については、 about_Registry_Providerを参照してください。

Get-ChildItem -Path HKLM:\HARDWARE

Hive: HKEY_LOCAL_MACHINE\HARDWARE

Name             Property
----             --------
ACPI
DESCRIPTION
DEVICEMAP
RESOURCEMAP
UEFI

Get-ChildItem -Path HKLM:\HARDWARE -Exclude D*

Hive: HKEY_LOCAL_MACHINE\HARDWARE

Name                           Property
----                           --------
ACPI
RESOURCEMAP

最初のコマンドは、レジストリ キーの内容を HKLM:\HARDWARE 示します。 Exclude パラメーターは、Get-ChildItem次で始まるD*サブキーを返さないよう指示します。 現時点では、 Exclude パラメーターはサブキーでのみ機能し、項目プロパティでは機能しません。

例 7: コード署名機関を使用してすべての証明書を取得する

この例では、コード署名機関を持つ PowerShell Cert: ドライブ内の各証明書を取得します。

このコマンドレットでは Get-ChildItemPath パラメーターを使用して Cert: プロバイダーを指定します。 Recurse パラメーターは、Path とそのサブディレクトリで指定されたディレクトリを検索します。 CodeSigningCert パラメーターは、コード署名機関を持つ証明書のみを取得します。

Get-ChildItem -Path Cert:\* -Recurse -CodeSigningCert

証明書プロバイダーと Cert: ドライブの詳細については、「 about_Certificate_Provider」を参照してください。

例 8: Depth パラメーターを使用して項目を取得する

次の使用例は、ディレクトリとそのサブディレクトリ内の項目を表示します。 Depth パラメーターは、再帰に含めるサブディレクトリ レベルの数を決定します。 空のディレクトリは出力から除外されます。

Get-ChildItem -Path C:\Parent -Depth 2

Directory: C:\Parent

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:24                SubDir_Level1
-a----        2/13/2019     08:55             26 file.txt

    Directory: C:\Parent\SubDir_Level1

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:24                SubDir_Level2
-a----        2/13/2019     08:55             26 file.txt

    Directory: C:\Parent\SubDir_Level1\SubDir_Level2

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:22                SubDir_Level3
-a----        2/13/2019     08:55             26 file.txt

このコマンドレットでは Get-ChildItemPath パラメーターを使用して C:\Parent を指定します。 Depth パラメーターは、2 つの再帰レベルを指定します。 Get-ChildItem には、 Path パラメーターで指定されたディレクトリの内容と、2 つのレベルのサブディレクトリが表示されます。

例 9: ハード リンク情報の取得

PowerShell 6.2 では、ハード リンク情報を取得するための代替ビューが追加されました。

Get-ChildItem -Path C:\PathContainingHardLink | Format-Table -View childrenWithHardLink

例 10: Windows 以外のオペレーティング システムの出力

Unix システムの PowerShell 7.1 では、Unix のような出力が Get-ChildItem 提供されます。

PS> Get-ChildItem /etc/r*

Directory: /etc

UnixMode   User Group    LastWriteTime Size Name
--------   ---- -----    ------------- ---- ----
drwxr-xr-x root wheel  9/30/2019 19:19  128 racoon
-rw-r--r-- root wheel  9/26/2019 18:20 1560 rc.common
-rw-r--r-- root wheel  7/31/2017 17:30 1560 rc.common~previous
-rw-r--r-- root wheel  9/27/2019 20:34 5264 rc.netboot
lrwxr-xr-x root wheel  11/8/2019 15:35   22 resolv.conf -> /private/var/run/resolv.conf
-rw-r--r-- root wheel 10/23/2019 17:41    0 rmtab
-rw-r--r-- root wheel 10/23/2019 17:41 1735 rpc
-rw-r--r-- root wheel  7/25/2017 18:37 1735 rpc~previous
-rw-r--r-- root wheel 10/23/2019 18:42  891 rtadvd.conf
-rw-r--r-- root wheel  8/24/2017 21:54  891 rtadvd.conf~previous

出力の一部になった新しいプロパティは次のとおりです。

  • UnixMode は、Unix システムで表されるファイルのアクセス許可です
  • ユーザー がファイル所有者である
  • グループ はグループ所有者です
  • サイズ は、Unix システムで表されるファイルまたはディレクトリのサイズです

注意

この機能は、PowerShell 7.1 で試験段階からメインストリームに移行しました。

例 11 - ジャンクション ポイントのリンク ターゲットを取得する

Windows コマンド シェルのコマンドは dir 、ファイルシステム ジャンクション ポイントのターゲットの場所を示します。 PowerShell では、この情報は、返されるGet-ChildItemファイルシステム オブジェクトの LinkTarget プロパティから取得でき、既定の出力に表示されます。

PS D:\> New-Item -ItemType Junction -Name tmp -Target $env:TEMP
PS D:\> Get-ChildItem | select name,LinkTarget

Name     LinkTarget
----     ----------
tmp      C:\Users\user1\AppData\Local\Temp

PS D:\> Get-ChildItem

    Directory: D:\

Mode          LastWriteTime    Length Name
----          -------------    ------ ----
l----   12/16/2021  9:29 AM           tmp -> C:\Users\user1\AppData\Local\Temp

パラメーター

-Attributes

指定した属性のファイルとフォルダーを取得します。 このパラメーターはすべての属性をサポートします。複雑な属性の組み合わせを指定できます。

たとえば、暗号化または圧縮されている非システム ファイル (非ディレクトリ) を取得するには、次のように入力します。

Get-ChildItem -Attributes !Directory+!System+Encrypted, !Directory+!System+Compressed

よく使用される属性を持つファイルとフォルダーを検索するには、 Attributes パラメーターを使用します。 または、 パラメーターディレクトリファイル非表示ReadOnlyおよびシステム

Attributes パラメーターは、次のプロパティをサポートしています。

  • Archive
  • Compressed
  • [デバイス]
  • ディレクトリ
  • Encrypted
  • [非表示]
  • IntegrityStream
  • 標準
  • NoScrubData
  • NotContentIndexed
  • オフライン
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • システム
  • 一時

これらの属性の詳細については、 FileAttributes 列挙を参照してください。

属性を結合するには、次の演算子を使用します。

  • ! (NOT)
  • + (AND)
  • , (OR)

演算子とその属性の間にスペースを使用しないでください。 スペースはコンマの後に指定できます。

一般的な属性の場合は、次の省略形を使用します。

  • D (ディレクトリ)
  • H (非表示)
  • R (読み取り専用)
  • S (システム)
Type:FlagsExpression<T>[FileAttributes]
Accepted values:Archive, Compressed, Device, Directory, Encrypted, Hidden, IntegrityStream, Normal, NoScrubData, NotContentIndexed, Offline, ReadOnly, ReparsePoint, SparseFile, System, Temporary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Depth

このパラメーターは PowerShell 5.0 で追加され、再帰の深さを制御できます。 既定では、 Get-ChildItem 親ディレクトリの内容が表示されます。 Depth パラメーターは、再帰に含まれるサブディレクトリ レベルの数を決定し、内容を表示します。

たとえば、 Depth 2Path パラメーターのディレクトリ、第 1 レベルのサブディレクトリ、および 2 番目のレベルのサブディレクトリが含まれます。 既定では、ディレクトリ名とファイル名が出力に含まれます。

注意

PowerShell または cmd.exeの Windows コンピューターでは、 tree.com コマンドを使用してディレクトリ構造のグラフィカル ビューを表示できます。

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Directory

ディレクトリの一覧を取得するには、Directory パラメーターまたは Directory プロパティでAttributes パラメーターを使用します。 Recurse パラメーターは、Directory と共に使用できます。

Type:SwitchParameter
Aliases:ad, d
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

コマンドレットが子項目を取得する際に一致する 1 つ以上の文字列パターンの配列を指定します。 一致する項目はすべて出力から除外されます。 パス要素またはパターンを入力します (例: *.txt or A*. ワイルドカード文字を使用できます。

Path パラメーターの末尾のアスタリスク (*) は省略可能です。  たとえば、-Path C:\Test\Logs または -Path C:\Test\Logs\* です。 末尾にアスタリスク (*) が含まれている場合、コマンドは Path パラメーターのサブディレクトリに再帰します。 アスタリスク (*) を指定しないと、 Path パラメーターの内容が表示されます。 詳細については、例 5 と「メモ」セクションに記載されています。

Include パラメーターと Exclude パラメーターを組み合わせて使用できます。 ただし、除外はインクルードの後に適用され、最終的な出力に影響を与える可能性があります。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-File

ファイルの一覧を取得するには、 File パラメーターを使用します。 Recurse パラメーターは File で使用できます。

Type:SwitchParameter
Aliases:af
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Filter

Path パラメーターを修飾するフィルターを指定します。 FileSystem プロバイダーは、フィルターをサポートする唯一のインストール済み PowerShell プロバイダーです。 フィルターは他のパラメーターよりも効率的です。 プロバイダーは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、コマンドレットがオブジェクトを取得するときにフィルターを適用します。 フィルター文字列が .NET API に渡され、ファイルが列挙されます。 API では、ワイルドカードのみがサポート * されています ?

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

既定では、コマンドレットは Get-ChildItem 再帰中に見つかったディレクトリへのシンボリック リンクを表示しますが、それらのディレクトリには再帰しません。 FollowSymlink パラメーターを使用して、これらのシンボリック リンクを対象とするディレクトリを検索します。 FollowSymlink は動的パラメーターであり、FileSystem プロバイダーでのみサポートされます。

このパラメーターは、PowerShell 6.0 で導入されました。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

非表示のファイルやシステム ファイルなど、ユーザーがアクセスできない項目をコマンドレットで取得できるようにします。 Force パラメーターは、セキュリティ制限をオーバーライドしません。 実装はプロバイダーごとに異なります。 詳細については、「about_Providers」を参照してください。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Hidden

非表示項目のみを取得するには、 Hidden パラメーターまたは Attributes パラメーターを Hidden プロパティと共に使用します。 既定では、 Get-ChildItem 非表示の項目は表示されません。 Force パラメーターを使用して非表示の項目を取得します。

Type:SwitchParameter
Aliases:ah, h
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

コマンドレットが子項目を取得する際に一致する 1 つ以上の文字列パターンの配列を指定します。 一致する項目はすべて出力に含まれます。 パス要素またはパターンを入力します (例: "*.txt". ワイルドカード文字を使用できます。 Include パラメーターは、コマンドに項目C:\Windows\*の内容 (ワイルドカード文字がディレクトリの内容C:\Windowsを指定するなど) が含まれている場合にのみ有効です。

Include パラメーターと Exclude パラメーターを組み合わせて使用できます。 ただし、除外はインクルードの後に適用され、最終的な出力に影響を与える可能性があります。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

1 つ以上の場所へのパスを指定します。 LiteralPath の値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。

詳細については、「about_Quoting_Rules」 参照してください。

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

場所内の項目の名前のみを取得します。 出力は、パイプラインを他のコマンドに送信できる文字列オブジェクトです。 ワイルドカードを使用できます。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Path

1 つ以上の場所へのパスを指定します。 ワイルドカードを使用できます。 既定の場所は現在のディレクトリ (.) です。

Type:String[]
Position:0
Default value:Current directory
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ReadOnly

読み取り専用項目のみを取得するには、 ReadOnly パラメーターまたは Attributes パラメーター ReadOnly プロパティを使用します。

Type:SwitchParameter
Aliases:ar
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Recurse

指定された場所にある項目と、その場所のすべての子項目にある項目を取得します。

Type:SwitchParameter
Aliases:s
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-System

システム ファイルとディレクトリのみを取得します。 システム ファイルとフォルダーのみを取得するには、システム パラメーターまたは属性パラメーター System プロパティ使用します。

Type:SwitchParameter
Aliases:as
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

String

パス Get-ChildItemを含む文字列をパイプ処理できます。

出力

Object

返される Get-ChildItem オブジェクトの種類は、プロバイダー ドライブ パス内のオブジェクトによって決まります。

String

Name パラメーターを使用する場合は、Get-ChildItemオブジェクト名を文字列として返します。

メモ

  • Get-ChildItem は、任意の組み込みエイリアス、 ls、、 dirおよび gciを使用して実行できます。 詳細については、「 about_Aliases」を参照してください。
  • Get-ChildItem では、既定では非表示の項目は取得されません。 隠し項目を取得するには、Force パラメーターを使用します。
  • この Get-ChildItem コマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用できるプロバイダーを一覧表示するには、「.」と入力します Get-PSProvider。 詳細については、「about_Providers」を参照してください。