Get-ChildItem
cmdlet 获取一个或多个指定位置中的项。 如果该项为容器,则此命令将获取容器内的各项(称为子项)。 可以使用
Recurse
参数获取所有子容器中的项,并使用
Depth
参数来限制递归级别数。
Get-ChildItem
不会显示空目录。 当
Get-ChildItem
命令包含
Depth
或
Recurse
参数时,输出中不包含空目录。
位置由 PowerShell 提供程序向
Get-ChildItem
公开。 位置可以是文件系统目录、注册表配置单元或证书存储。 某些参数仅适用于特定提供程序。 有关详细信息,请参阅
about_Providers
。
示例 1:从文件系统目录获取子项
此示例从文件系统目录中获取子项。 将显示文件名和子目录名称。 对于空位置,该命令不会返回任何输出并返回到 PowerShell 提示符。
Get-ChildItem
cmdlet 使用
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
、文件大小(
长度
),以及项
名称
。
Mode
属性中的字母可以解释为:
l
(链接)
d
(目录)
a
(存档)
r
(只读)
h
(隐藏)
s
(系统)
有关模式标志的详细信息,请参阅
about_Filesystem_Provider
。
示例 2:获取目录中的子项名称
此示例仅列出目录中项的名称。
Get-ChildItem
cmdlet 使用
Path
参数来指定目录
C:\Test
。
Name
参数仅返回指定路径中的文件或目录名称。 返回的名称相对于
Path
参数的值。
Get-ChildItem -Path C:\Test -Name
anotherfile.txt
Command.txt
CreateTestFile.ps1
ReadOnlyFile.txt
示例 3:获取当前目录和子目录中的子项
此示例显示位于当前目录及其子目录中的
.txt
文件。
Get-ChildItem -Path .\*.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-ChildItem
cmdlet 使用
Path
参数来指定
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-ChildItem
cmdlet 使用
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
Get-ChildItem
cmdlet 使用
Path
参数来指定目录
C:\Test\Logs
。
Exclude
参数使用星号 (
*
) 通配符指定从输出中排除以
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
。 配置单元的路径和顶级注册表项显示在 PowerShell 控制台中。
有关详细信息,请参阅
about_Registry_Provider
。
Get-ChildItem -Path HKLM:\HARDWARE
Hive: HKEY_LOCAL_MACHINE\HARDWARE
Name Property
---- --------
DESCRIPTION
DEVICEMAP
RESOURCEMAP
Get-ChildItem -Path HKLM:\HARDWARE -Exclude D*
Hive: HKEY_LOCAL_MACHINE\HARDWARE
Name Property
---- --------
RESOURCEMAP
第一个命令显示
HKLM:\HARDWARE
注册表项的内容。
Exclude
参数指示
Get-ChildItem
不返回以
D*
开头的任何子项。 目前,
Exclude
参数仅适用于子项,不适用于项属性。
示例 7:获取具有代码签名颁发机构的证书
此示例获取 PowerShell
Cert:
驱动器中具有代码签名机构的每个证书。
Get-ChildItem
cmdlet 使用
Path
参数指定带有
Cert:
驱动器的证书提供程序。
Recurse
参数搜索由
Path
及其子目录指定的目录。
CodeSigningCert
参数仅获取具有代码签名颁发机构的证书。
Get-ChildItem -Path Cert:\* -Recurse -CodeSigningCert
有关 Certificate 提供程序和
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-ChildItem
cmdlet 使用
Path
参数来指定
C:\Parent
。
Depth
参数指定两个递归级别。
Get-ChildItem
显示由
Path
参数和两个子目录级别指定的目录内容。
示例 9:获取硬链接信息
在 PowerShell 6.2 中,添加了用于获取硬链接信息的备用视图。
Get-ChildItem -Path C:\PathContainingHardLink | Format-Table -View childrenWithHardLink
示例 10:非 Windows 操作系统的输出
在 Unix 系统上的 PowerShell 7.1 中,
Get-ChildItem
提供类似于 Unix 的输出:
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 系统上表示的文件权限
User
是文件所有者
Group
是组所有者
Size
是 Unix 系统上表示的文件或目录的大小
在 PowerShell 7.1 中,此功能已从实验性功能转变为主要功能。
示例 11:获取交接点的链接目标
Windows Command Shell 中的
dir
命令显示文件系统交接点的目标位置。 在 PowerShell 中,此信息可从
Get-ChildItem
返回的文件系统对象的
LinkTarget
属性中获取,并显示在默认输出中。
PS D:\> New-Item -ItemType Junction -Name tmp -Target $env:TEMP
PS D:\> Get-ChildItem | Select-Object 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
示例 12:获取 AppX 重新分析点的链接目标
此示例尝试获取 AppX 重新分析点的目标信息。 Microsoft Store 应用程序会在用户的 AppData 目录中创建 AppX 重新分析点。
Get-ChildItem ~\AppData\Local\Microsoft\WindowsApps\MicrosoftEdge.exe |
Select-Object Mode, LinkTarget, LinkType, Name
Mode LinkTarget LinkType Name
---- ---------- -------- ----
la--- MicrosoftEdge.exe
目前,Windows 不提供用于获取 AppX 重新分析点的目标信息的方法。
文件系统对象的
LinkTarget
和
LinkType
属性为空。
-Attributes
此参数仅在
FileSystem
提供程序中可用。
获取具有指定属性的文件和文件夹。 此参数支持所有属性,并且允许你指定复杂的属性组合。
例如,若要获取加密或压缩的非系统文件(而不是目录),请键入:
Get-ChildItem -Attributes !Directory+!System+Encrypted, !Directory+!System+Compressed
若要查找具有常用属性的文件和文件夹,请使用
Attributes
参数。 或者,使用参数
Directory
、
File
、
Hidden
、
ReadOnly
和
System
。
Attributes
参数支持以下属性:
Compressed
Directory
Hidden
IntegrityStream
NoScrubData
NotContentIndexed
Offline
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
-CodeSigningCert
此参数仅在
Certificate
提供程序中可用。
若要获取
EnhancedKeyUsageList
属性值中具有
Code Signing
的证书列表,请使用
CodeSigningCert
参数。
Type:
SwitchParameter
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
参数的目录、第一级子目录和第二级子目录。 默认情况下,输出中包含目录名称和文件名。
在 Windows 计算机的 PowerShell 或
cmd.exe
中,可以使用
tree.com
命令显示目录结构的图形视图。
此参数仅在
Certificate
提供程序中可用。
指定与 cmdlet 获取的证书
DNSNameList
属性匹配的域名或名称模式。 该参数的值可以是
Unicode
或
ASCII
。 Punycode 值将转换为 Unicode。 允许使用通配符 (
*
)。
此参数是在 PowerShell 7.1 中重新引入的
Type:
DnsNameRepresentation
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True
-DocumentEncryptionCert
此参数仅在
Certificate
提供程序中可用。
若要获取
EnhancedKeyUsageList
属性值中具有
Document Encryption
的证书列表,请使用
DocumentEncryptionCert
参数。
Type:
SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
此参数仅在
Certificate
提供程序中可用。
指定与 cmdlet 获取的证书
EnhancedKeyUsageList
属性匹配的文本或文本模式。 允许使用通配符 (
*
)。
EnhancedKeyUsageList
属性包含 EKU 的易记名称和 OID 字段。
此参数是在 PowerShell 7.1 中重新引入的
Type:
String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True
-Exclude
指定要匹配的一个或多个字符串模式的数组,因为 cmdlet 获取子项。 输出中排除了任何匹配项。 请输入路径元素或模式,例如
*.txt
或
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
-ExpiringInDays
此参数仅在
Certificate
提供程序中可用。
指定该 cmdlet 仅应返回将在指定天数内或之前过期的证书。 值 0 (
0
) 将获取已过期的证书。
此参数是在 PowerShell 7.1 中重新引入的
Type:
Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
-File
此参数仅在
FileSystem
提供程序中可用。
若要获取文件列表,请使用
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
-FollowSymlink
此参数仅在
FileSystem
提供程序中可用。
默认情况下,
Get-ChildItem
cmdlet 显示在递归期间找到的目录的符号链接,但不会递归到它们中。 使用
FollowSymlink
参数可以搜索以这些符号链接为目标的目录。
FollowSymlink
是一个动态参数,仅在
FileSystem
提供程序中受支持。
此参数是在 PowerShell 6.0 中引入的。
Type:
SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
-Force
允许 cmdlet 获取用户非此不能访问的项,例如隐藏文件或系统文件。
Force
参数不会覆盖安全限制。 实现提供程序之间的差异。 有关详细信息,请参阅
about_Providers
。
Type:
SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False
-Hidden
此参数仅在
FileSystem
提供程序中可用。
若要仅获取隐藏项,请使用
Hidden
参数或具有
Hidden
属性的
Attributes
参数。 默认情况下,
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 获取子项。 输出中包含了任何匹配项。 请输入路径元素或模式,例如
"*.txt"
。
允许使用通配符。 仅当该命令包括项的内容时(例如
C:\Windows\*
,其中通配符指定
C:\Windows
目录的内容),
Include
参数才有效。
Include
和
Exclude
参数可以一起使用。 但是,排除是在包含之后应用的,这可能会影响最终输出。
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, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False
-Name
仅获取位置中的项的名称。 输出是一个字符串对象,可以通过管道向下发送到其他命令。 返回的名称相对于
Path
参数的值。
Type:
SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
-Path
指定一个或多个位置的路径。 可以使用通配符。 默认位置为当前目录 (
.
)。
Type:
String
[
]
Position:0
Default value:Current directory
Required:False
Accept pipeline input:True
Accept wildcard characters:True
-ReadOnly
此参数仅在
FileSystem
提供程序中可用。
若要仅获取只读项,请使用
ReadOnly
参数或具有
ReadOnly
属性的
Attributes
参数。
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
-SSLServerAuthentication
此参数仅在
Certificate
提供程序中可用。
若要获取
EnhancedKeyUsageList
属性值中具有
Server Authentication
的证书列表,请使用
SSLServerAuthentication
参数。
Type:
SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
-System
此参数仅在
FileSystem
提供程序中可用。
仅获取系统文件和目录。 若要仅获取系统文件和文件夹,请使用
System
参数或具有
System
属性的
Attributes
参数。
Type:
SwitchParameter
Aliases:as
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
String
可以通过管道将包含路径的字符串传递给此 cmdlet。
AliasInfo
该 cmdlet 在访问
Alias:
驱动器时输出此类型。
X509StoreLocation
X509Store
X509Certificate2
该 cmdlet 在访问
Cert:
驱动器时输出这些类型。
DictionaryEntry
该 cmdlet 在访问
Env:
驱动器时输出此类型。
DirectoryInfo
FileInfo
该 cmdlet 在访问 Filesystem 驱动器时输出这些类型。
FunctionInfo
FilterInfo
该 cmdlet 在访问
Function:
驱动器时输出这些类型。
RegistryKey
该 cmdlet 在访问注册表驱动器时输出此类型。
PSVariable
该 cmdlet 在访问
Variable:
驱动器时输出此类型。
WSManConfigContainerElement
WSManConfigLeafElement
该 cmdlet 在访问
WSMan:
驱动器时输出这些类型。
String
如果使用
Name
参数,则此 cmdlet 会将对象名称作为字符串返回。
PowerShell 包含
Get-ChildItem
的以下别名:
所有平台: