当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

作者:精品下载站 日期:2024-12-14 20:35:31 浏览:15 分类:玩电脑

Powershell 中的 Get-ChildItem Cmdlet IT 完整指南


Get-ChildItem PowerShell Cmdlet

PowerShell cmdlet Get-ChildItem 从一个或多个指定位置获取对象,例如文件系统目录、注册表配置单元或证书存储。这些位置由 PowerShell 提供商公开。

如果该位置是容器,则 cmdlet 获取该容器中的子项。 -Recurse 参数可用于从所有子容器获取项目,而 -Depth 参数可用于限制递归到的层数。

该 cmdlet 不显示空文件夹或空目录。对于空位置,该命令将返回 PowerShell 提示符,而不产生任何输出。

例如,以下 cmdlet 将从当前驱动器中获取所有文件和文件夹:

Get-ChildItem

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

如您所见,默认情况下,Get-ChildItem 显示每个项目的以下信息:模式、LastWriteTime、文件大小(长度)和名称。模式列中的字母含义如下:

  • l——链接
  • d——目录
  • 一个——存档
  • r——只读
  • h——隐藏
  • s——系统

Get-ChildItem 示例

让我们看一下 Get-ChildItem cmdlet 的一些用例:

  • 从特定文件系统目录检索子项目
  • 获取目录中子项的名称
  • 获取目录及其子目录中的所有文本文件
  • 将结果限制为特定子项目
  • 从结果中排除某些子项目
  • 从注册表节点获取注册表值
  • 获取具有代码签名权限的所有证书
  • 指定要搜索的子目录级别
  • 获取具有特定属性的项目
  • 使用过滤器限制搜索
  • 获取目录列表
  • 仅将结果限制为文件

从特定文件系统目录检索子项

要显示特定文件系统目录中的子项,请使用 -Path 参数指定该目录,如下所示:

Get-ChildItem -Path C:\”Program files”

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

获取目录中子项的名称

要仅查看目录中子项的名称,而不是上一个屏幕截图中的所有详细信息,请使用 -Name 参数:

Get-ChildItem -Path C:\"Program Files" -Name

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

获取目录及其子目录中的所有文本文件

要显示某个目录及其子目录中的所有 .txt 文件,请使用下面的 cmdlet。

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

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

-Path 参数C:Test Folder\*.txt 将结果限制为指定文件夹中具有 .txt 扩展名的文件。 -Recurse 参数扩展搜索范围以包括指定的目录及其子目录,这些目录显示在 Directory: 标题下。 -Force 参数显示隐藏文件(其模式为 h)。

将结果限制为特定子项目

要查找目录中的特定对象,请使用 -Ininclude 参数。下面的 cmdlet 查找目录 C:\Test Folder 中具有扩展名 .log 的所有文件:

Get-ChildItem -Path C:\”Test Folder”\* -Include *.log

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

请注意,当使用 -Include 参数时,-Path 参数中需要尾随通配符 (*),如上所示。如果“路径”选项不包含尾随星号,该命令将返回到 PowerShell 提示符且没有输出,如下所示:

Get-ChildItem -Path C:\”Test Folder”\ -Include *.log

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

但是,如果使用 -Recurse 参数搜索指定目录及其子目录,则不需要 -Path 参数中的尾随星号,如下例所示:

Get-ChildItem -Path C:\Test Folder -Recurse -Include *.log

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

从结果中排除某些子项目

您可以使用 -Exclude 参数从结果中排除某些项目。与 -Include 参数一样,-Exclude 要求在 -Path 参数末尾添加星号 (*),除非使用 -Recurse 参数。

为了说明此参数如何从结果中排除项目,我们首先运行以下 cmdlet 以查看指定目录及其子目录中的所有内容:

Get-ChildItem -Path C:\”Test Folder”\ -Recurse

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

请注意,结果包括两个名称以字母 S 开头的文件。要将它们从结果中排除,我们可以使用以下 cmdlet:

Get-ChildItem -Path C:\”Test Folder”\* -exclude S*

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

从注册表节点获取注册表值

要获取注册表值,我们可以使用-Path参数来指定注册表节点。以下 cmdlet 将显示顶级注册表项(请注意,HKLM\SOFTWAREHKEY_LOCAL_MACHINE\SOFTWARE 的缩写形式):

Get-ChildItem -Path HKLM:\SOFTWARE

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

如果我们不需要查看所有的注册表项,我们可以使用-Exclude参数来过滤掉我们不想要的。以下 cmdlet 将排除所有以字母 RC 开头的键:

Get-ChildItem -Path HKLM:\SOFTWARE -Exclude R*,C*

请注意,注册表 ClassesClientsRegisteredApplications 不再显示:

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

以下 cmdlet 显示如何显示其他常见注册表的内容:

Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE
Get-ChildItem -Path Registry::HKEY_CLASSES_ROOT
Get-ChildItem -Path Registry::HKEY_CURRENT_CONFIG
Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKEY_USERS
Get-ChildItem -Path Registry::HKEY_PERFORMANCE_DATA

获取具有代码签名权限的所有证书

下面的 cmdlet 从 PowerShell Cert: 目录及其子目录中检索具有代码签名权限的每个证书:

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

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

请注意,-Path 参数用于定义 Cert: 提供程序。 -Recurse 参数查看 -Path 目录及其子目录以返回具有代码签名权限的证书。

指定要搜索的子目录级别

要控制搜索中包含的子目录级别数,请使用 -Depth 参数。空文件夹不计算在内。

以下 cmdlet 列出了 C:Drivers 中的所有项目及其两级子目录:

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

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

获取具有特定属性的项目

要仅获取具有某些属性的项目,请使用 -Attributes 参数。例如,要从指定目录获取隐藏文件(不是目录),请使用以下 cmdlet:

Get-ChildItem -Path C:\”Test Folder”\ -Attributes !Directory+ Hidden,!Directory+Hidden

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

-Attributes 参数接受以下值:

  • 档案
  • 压缩的
  • 设备
  • 目录(或D)
  • 加密
  • 隐藏(或 H)
  • 诚信流
  • 普通的
  • 无擦洗数据
  • 未内容索引
  • 离线
  • 只读(或 R)
  • 重解析点
  • 稀疏文件
  • 系统(或S)
  • 暂时的

要组合属性,请使用以下运算符:

  • ! (不是)
  • +(与)
  • , (或者)

运算符与其属性之间不应有空格。逗号后允许有空格。

使用过滤器限制搜索

要限定 -Path 参数,请指定一个过滤器。仅文件系统提供程序支持筛选器,该提供程序是运行 PowerShell 的计算机上默认安装的唯一 PowerShell 提供程序。过滤器比其他参数更有效,因为提供程序在检索期间应用过滤器,而不是让 PowerShell 在检索对象后过滤对象。

为了枚举文件,过滤器字符串被提供给 .NET API。 API 仅支持通配符 *?

要获取特定目录中的所有 Word 文件,请使用以下 cmdlet:

Get-ChildItem C:\"Test Folder"\* -filter *.docx

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

获取目录列表

要获取目录列表,请使用 -Directory 参数。虽然您可以使用 -Attributes 参数和 Directory 属性来实现相同的目标,但 -Directory 参数可以与 -Recurse 参数一起使用来查看子目录。

以下 cmdlet 将列出顶级目录:

Get-ChildItem -Path C:\ -Directory

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

通过添加 -Recurse 参数,我们还可以列出子目录:

Get-ChildItem -Path C:\GroupID10SR1\ -Directory -Recurse

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

如果您只想查看目录和子目录的层次结构而不查看所有详细信息,请使用 -Name 参数:

Get-ChildItem -Path C:\GroupID10SR1\ -Directory -Name -Recurse

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

仅将结果限制为文件

要获取文件列表,请使用 -File 参数,如下所示:

Get-ChildItem -Path C:\ -File

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

如果要查看指定路径及其子目录中的文件,请使用 -Recurse 参数:

Get-ChildItem -Path C:\GroupID10SR1\ -File -Recurse

[玩转系统] Powershell 中的 Get-ChildItem Cmdlet IT 完整指南

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯