共用方式為


Get-ChildItem

取得一或多個指定之位置中的項目與子項目。

Syntax

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

Description

Cmdlet Get-ChildItem 會取得一或多個指定位置中的專案。 如果項目是容器,它便會取得容器內的項目,稱為子項目。 您可以使用 Recurse 參數來取得所有子容器中的專案,並使用 Depth 參數來限制遞歸的層級數目。

Get-ChildItem 不會顯示空白目錄。 Get-ChildItem當命令包含 DepthRecurse 參數時,輸出中不會包含空白目錄。

位置會由PowerShell提供者公開 Get-ChildItem 。 位置可以是文件系統目錄、登錄區或證書存儲。 如需詳細資訊,請參閱 about_Providers

範例

範例 1:從文件系統目錄取得子專案

這個範例會從文件系統目錄取得子專案。 會顯示檔案名和子目錄名稱。 針對空白位置,命令不會傳回任何輸出,並返回PowerShell提示字元。

Cmdlet Get-ChildItem 會使用 Path 參數來指定目錄 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、檔案大小 (Length) ,以及項目 的名稱Mode 屬性中的字母可以交錯,如下所示:

  • l (連結)
  • d (目錄)
  • a (封存)
  • r (唯讀)
  • h 隱藏) (
  • s (系統) 。

如需模式旗標的詳細資訊,請參閱 about_Filesystem_Provider

範例 2:取得目錄中的子項目名稱

此命令只會列出目錄中的項目名稱。

Cmdlet Get-ChildItem 會使用 Path 參數來指定目錄 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

Cmdlet Get-ChildItem 會使用 Path 參數來指定 C:\Test\*.txt路徑 會使用星號 () * 通配符來指定擴展名為 的所有檔案 .txtRecurse 參數會搜尋其子目錄的 Path 目錄,如目錄: 標題所示。 Force 參數會顯示隱藏的檔案,例如具有 h 模式的hiddenfile.txt

範例 4:使用 Include 參數取得子專案

在此範例 Get-ChildItem 中, 使用 Include 參數從 Path 參數指定的目錄中尋找特定專案。

# When using the -Include parameter, if you do not 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

Cmdlet Get-ChildItem 會使用 Path 參數來指定目錄 C:\TestPath 參數包含尾端星號 () * 通配符,以指定目錄的內容。 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 的內容。 輸出是使用 ExcludeRecurse 參數之其他命令的參考。

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

Cmdlet Get-ChildItem 會使用 Path 參數來指定目錄 C:\Test\LogsExclude 參數會使用星號 (*) 通配符來指定以 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:\HARDWAREExclude 參數會Get-ChildItem指示不要傳回以 開頭D*的任何子機碼。 目前 ,Exclude 參數僅適用於子機碼,不適用於項目屬性。

範例 7:取得具有程式代碼簽署授權單位的所有憑證

此命令會取得 PowerShell 憑證: 具有程式代碼簽署授權單位的磁碟驅動器中的每個憑證。

Cmdlet Get-ChildItem 會使用 Path 參數來指定 Cert: 提供者。 Recurse 參數會搜尋Path所指定的目錄及其子目錄。 CodeSigningCert 參數只會取得具有程式代碼簽署授權的憑證。

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

如需憑證提供者和憑證:磁碟驅動器的詳細資訊,請參閱 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

Cmdlet Get-ChildItem 會使用 Path 參數來指定 C:\ParentDepth 參數會指定兩個遞歸層級。 Get-ChildItem 會顯示 Path 參數所指定的目錄內容,以及兩個層級的子目錄。

參數

-Attributes

取得具有指定屬性的檔案和資料夾。 此參數支援所有屬性,可讓您指定複雜的屬性組合。

例如,若要取得已加密或壓縮的非系統檔案 (非目錄),請輸入:

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

若要尋找具有常用屬性的檔案和資料夾,請使用 Attributes 參數。 或者,參數 DirectoryFileHiddenReadOnlySystem

Attributes 參數支援下列屬性:

  • 封存
  • Compressed
  • 裝置
  • 目錄
  • 已加密
  • Hidden
  • IntegrityStream
  • 一般
  • NoScrubData
  • NotContentIndexed
  • 離線
  • ReadOnly
  • ReparsePoint
  • 疏鬆File
  • 系統
  • 暫存

如需這些屬性的描述,請參閱 FileAttributes 列舉

若要合併屬性,請使用下列運算子:

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

請勿在運算子與其屬性之間使用空格。 逗號之後會接受空格。

針對常見的屬性,請使用下列縮寫:

  • D (Directory)
  • 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 2 包含 Path 參數的目錄、子目錄的第一層,以及子目錄的第二層。 根據預設,輸出中會包含目錄名稱和檔名。

注意

在 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 參數或 Attributes 參數搭配 Directory 屬性。 您可以使用 Recurse 參數搭配 Directory

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

-Exclude

指定這個 Cmdlet 從作業中排除的屬性或屬性,做為字串陣列。 此參數的值會限定 Path 參數。 輸入路徑專案或模式,例如 *.txtA*。 (接受萬用字元)。

Path 參數中的尾端星號 (*) 是選擇性的。 例如,-Path C:\Test\Logs-Path C:\Test\Logs\*。 如果包含尾端星號 (*) ,命令會遞歸至 Path 參數的子目錄。 如果沒有星號 (*) , 就會顯示Path 參數的內容。 範例 5 和附註一節包含更多詳細數據。

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 提供者。 篩選比其他參數更有效率,因為提供者會在 Cmdlet 取得物件時套用它們,而不是在擷取對象之後讓 PowerShell 篩選物件。 篩選字串會傳遞至 .NET API 以列舉檔案。 該 API 僅支援 *? 通配符。

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

-Force

可讓 Cmdlet 取得使用者無法以其他方式存取的項目,例如隱藏的檔案或系統檔案。 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

以字串陣列指定此 Cmdlet 在作業中納入的項目。 此參數的值會限定 Path 參數。 輸入路徑元素或模式,例如 "*.txt"。 允許使用萬用字元。 Include 參數只有在命令包含項目的內容時有效,例如 C:\Windows\*,其中通配符會指定目錄的內容C:\Windows

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

-LiteralPath

指定一個或多個位置的路徑。 LiteralPath 的值會完全依照其類型使用。 沒有字元會被視為萬用字元。 如果路徑包含逸出字元,請將它括在單引號中。 單引號會告訴PowerShell不要將任何字元解譯為逸出序列。

如需詳細資訊,請參閱 about_Quoting_Rules

Type:String[]
Aliases:PSPath
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

指定一個或多個位置的路徑。 可使用萬用字元。 預設位置是目前目錄 () .

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 參數或 Attributes 參數 System 屬性。

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

-UseTransaction

將命令加入使用中交易。 只有交易為處理中狀態時,此參數才有效。 如需詳細資訊,請參閱 about_Transactions

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

輸入

String

您可以使用管線傳送包含 路徑的 Get-ChildItem字串。

輸出

Object

傳回的物件 Get-ChildItem 類型取決於提供者磁碟驅動器路徑中的物件。

String

如果您使用 Name 參數, Get-ChildItem 請將物件名稱傳回為字串。

備註

  • 您可以透過其內建別名、lsdirgci來參考 Get-ChildItem 。 如需詳細資訊,請參閱 about_Aliases
  • Get-ChildItem 預設不會取得隱藏的專案。 若要取得隱藏的項目,請使用 Force 參數。
  • Cmdlet Get-ChildItem 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider。 如需詳細資訊,請參閱 about_Providers