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
當命令包含 Depth 或 Recurse 參數時,輸出中不會包含空白目錄。
位置會由PowerShell提供者公開 Get-ChildItem
。 位置可以是文件系統目錄、登錄區或證書存儲。 如需詳細資訊,請參閱 about_Providers。
範例
範例 1:從文件系統目錄取得子專案
這個範例會從文件系統目錄取得子專案。 會顯示檔案名和子目錄名稱。 針對空白位置,命令不會傳回任何輸出,並返回PowerShell提示字元。
Cmdlet Get-ChildItem
會使用 Path 參數來指定目錄 C:\Test
。
Get-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:\Test
。 Name 參數只會從指定的路徑傳回檔案或目錄名稱。
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
。 路徑 會使用星號 () *
通配符來指定擴展名為 的所有檔案 .txt。 Recurse 參數會搜尋其子目錄的 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:\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
Cmdlet Get-ChildItem
會使用 Path 參數來指定目錄 C:\Test\Logs
。
Exclude 參數會使用星號 (*
) 通配符來指定以 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 憑證: 具有程式代碼簽署授權單位的磁碟驅動器中的每個憑證。
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:\Parent。 Depth 參數會指定兩個遞歸層級。 Get-ChildItem
會顯示 Path 參數所指定的目錄內容,以及兩個層級的子目錄。
參數
-Attributes
取得具有指定屬性的檔案和資料夾。 此參數支援所有屬性,可讓您指定複雜的屬性組合。
例如,若要取得已加密或壓縮的非系統檔案 (非目錄),請輸入:
Get-ChildItem -Attributes !Directory+!System+Encrypted, !Directory+!System+Compressed
若要尋找具有常用屬性的檔案和資料夾,請使用 Attributes 參數。 或者,參數 Directory、 File、 Hidden、 ReadOnly 和 System。
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 參數。 輸入路徑專案或模式,例如 *.txt
或 A*
。 (接受萬用字元)。
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 |
輸入
您可以使用管線傳送包含 路徑的 Get-ChildItem
字串。
輸出
傳回的物件 Get-ChildItem
類型取決於提供者磁碟驅動器路徑中的物件。
如果您使用 Name 參數, Get-ChildItem
請將物件名稱傳回為字串。
備註
- 您可以透過其內建別名、
ls
、dir
和gci
來參考Get-ChildItem
。 如需詳細資訊,請參閱 about_Aliases。 Get-ChildItem
預設不會取得隱藏的專案。 若要取得隱藏的項目,請使用 Force 參數。- Cmdlet
Get-ChildItem
的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入Get-PSProvider
。 如需詳細資訊,請參閱 about_Providers。