添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

    此参数仅在 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 的以下别名:

  • 所有平台:
  •