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

[玩转系统] 如何在 PowerShell 中使用 Get-ChildItem?

作者:精品下载站 日期:2024-12-14 21:41:37 浏览:13 分类:玩电脑

如何在 PowerShell 中使用 Get-ChildItem?


您是否需要使用 PowerShell 获取目录中所有文件和文件夹的列表? Get-ChildItem PowerShell cmdlet 或简称 gci(其他别名:Dir、LS)是 PowerShell 中最有用的命令之一,是获取目录内容的首选命令。与Windows命令提示符中的dir命令类似,您可以快速列出目录的内容、文件和文件夹的属性等等。在这份综合指南中,我将带您了解有关使用 PowerShell Get-ChildItem 充分发挥其潜力所需了解的所有信息。

PowerShell Get-ChildItem 简介

PowerShell Get-ChildItem 是一个命令,用于检索指定位置(通常从文件系统目录)中的子项(文件和文件夹)列表。它可用于搜索文件和文件夹、显示其属性并对它们执行操作。

要使用 Get-ChildItem 命令,请打开 PowerShell 并键入“Get-ChildItem”,后跟要搜索的文件夹的路径。例如:


Get-ChildItem "C:\Documents"

这将返回“C:\Documents”文件夹中所有文件和文件夹的列表,并显示模式、上次写入时间、文件大小(长度)和名称等信息。

[玩转系统] 如何在 PowerShell 中使用 Get-ChildItem?

了解 Get-ChildItem 的语法

Get-ChildItem 的语法由命令“Get-ChildItem”后跟一个或多个参数组成。最常用的参数是:

  • 路径:指定要搜索的文件夹的位置。它可以是文件目录、注册表配置单元或证书存储。如果未指定,则使用当前位置。
  • 过滤器:指定要应用于结果的过滤器。允许您根据特定模式过滤项目。
  • 递归:指定是否也搜索子文件夹。
  • 只读隐藏和系统:指定结果中是否包含只读、隐藏和系统文件和文件夹。
  • 包含:指定要包含在结果中的文件扩展名列表。
  • 排除:“排除”参数允许您根据名称或模式从结果中排除特定项目。
  • Name:Name 参数指定仅应返回项目的名称,而不是其完整详细信息。
  • 强制:“强制”参数强制检索默认情况下通常不显示的隐藏项目和系统项目。

以下是一起使用这些参数的示例:


Get-ChildItem -Path "C:\Logs\*" -Filter "*.log" -File -Include "*test*" -Exclude "*old*"

这将返回“C:\Logs”文件夹中名称中包含“test”的所有 .log 文件的列表,不包括名称中包含“old”的任何文件。

递归检索

您可以使用-Recurse参数从所有子容器中检索项目。例如,如果要检索特定目录及其所有子目录中的所有文件和文件夹,可以使用以下命令:


Get-ChildItem -Path "C:\Documents" -Recurse

此命令将从“C:\Documents”文件夹及其所有子目录中检索所有文件和文件夹。

使用 Get-ChildItem 进行过滤 - 包括通配符的使用

使用 Get-ChildItem 进行过滤可以将搜索结果缩小到仅包含您需要的文件或文件夹。使用 Get-ChildItem 进行过滤的最常见方法是使用通配符。通配符是代表文件或文件夹名称中的一个或多个字符的字符。最常用的通配符是:

  • *(星号):代表任意数量的字符。
  • ? (问号):代表单个字符。

以下是在 Get-ChildItem 中使用通配符的示例:


Get-ChildItem -Path "C:\Documents" -Filter *report*

这将返回“C:\Documents”文件夹中名称中包含“report”一词的所有文件和文件夹的列表。您还可以使用通配符进行过滤:


Get-ChildItem -Path "C:\Temp\*.txt"

请注意,Filter 参数仅接受单个字符串。如果要对多个条件应用过滤器,请使用“包含”或“排除”参数。


Get-ChildItem -Path C:\Temp\* -Include ("*.csv","*.txt")

按扩展名过滤文件

Get-ChildItem 提供了用于过滤数据的各种选项。您可以使用-Filter参数指定过滤项目的最有效方式。 -Include 参数可用于仅从路径中获取指定的项目,并且可以与通配符一起使用。 -Exclude 参数可用于从路径中排除指定的项目。

例如,如果您想从特定目录中检索所有扩展名为 .txt 的文件,请使用以下命令:


Get-ChildItem -Path "C:\Documents" -Filter *.txt

此命令将使用通配符从“C:\Documents”文件夹中检索所有扩展名为 .txt 的 txt 文件。您可以使用“排除”参数排除特定文件类型:


Get-ChildItem -Path C:\Temp\* -Exclude ("*.log","*.txt")

[玩转系统] 如何在 PowerShell 中使用 Get-ChildItem?

排除特定项目

如果要从结果中排除特定项目,可以使用 -Exclude 参数。例如,要排除名称中包含“temp”一词的所有文件,可以使用以下命令:


Get-ChildItem -Path "C:\Documents" -Exclude "*temp*"

此命令将返回指定目录中的所有项目,名称中带有“temp”的项目除外。

Get-ChildItem 示例

以下是如何在 PowerShell 中使用 Get-ChildItem 的几个实际示例:

使用 Get-ChildItem 计算文件夹中的文件数

您可以使用 Get-ChildItem 来计算文件夹中的文件数。为此,请使用 Measure-Object cmdlet。

以下是计算 Documents 文件夹中文件数量的示例:


(Get-ChildItem -Path "C:\Documents" -File).count

这将返回文档文件夹中的文件数。

将 Get-ChildItem cmdlet 输出通过管道传输到其他 cmdlet

您可以将 Get-ChildItem cmdlet 的输出发送到 PowerShell 中的其他 cmdlet。例如,让我们获取过去 7 天内修改过的所有文件:


Get-ChildItem -Path "C:\Temp" | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)}

同样,您可以使用Where-Object 根据文件大小过滤文件。


Get-ChildItem -Path "C:\Temp" | Where-Object {$_.Length -gt 1MB}

使用 Get-ChildItem 显示完整文件路径

默认情况下,Get-ChildItem 仅显示文件或文件夹名称。如果要显示文件或文件夹的完整路径,可以使用 FullName 属性。

以下是显示 Documents 文件夹中所有文件的完整路径的示例:


Get-ChildItem -Path "C:\Documents" -File | Select-Object FullName

这将返回“C:\Documents”文件夹中所有完整文件路径的列表。

使用 Get-ChildItem 仅检索文件(不包括目录)

您可以使用 Get-ChildItem 仅检索文件,不包括文件夹。为此,请使用 -File 参数。

以下是仅检索 Documents 文件夹中的文件的示例:


Get-ChildItem -Path C:\Documents -File

这将返回 C:\Documents 文件夹中所有文件的列表。

如何使用 Get-ChildItem 仅显示文件夹?

Directory 参数允许您仅检索目录,从结果中排除文件和其他类型的项目。如果您只对使用目录感兴趣并想要过滤掉其他类型的项目,这可能很有用。

以下是仅显示 Documents 文件夹中的文件夹的示例:


Get-ChildItem -Path C:\Documents -Directory

这将返回文档文件夹中所有文件夹的列表。这是我关于使用 PowerShell 查找空目录的相关帖子:How to Check if a Folder is Empty in PowerShell?

使用 Get-ChildItem 的高级选项

Get-ChildItem 还提供对高级筛选选项的支持,例如排序、分组和选择特定属性。


Get-ChildItem -Path C:\Documents | Sort-Object LastWriteTime -Descending

这将按 LastWriteTime 属性按降序返回“C:\Documents”文件夹中所有文件的列表。

限制检索深度

您可以使用-Depth参数来限制递归深度。例如,如果要检索特定目录及其直接子目录中的所有文件和文件夹,可以使用以下命令:


Get-ChildItem -Path "C:\Documents" -Recurse -Depth 1

此命令将从“C:\Documents”文件夹及其直接子目录中检索所有文件和文件夹。

检索只读/隐藏/系统文件和文件夹

默认情况下,Get-ChildItem 不会从指定位置检索隐藏项目。您可以使用-Hidden参数来检索隐藏的项目。例如,如果要检索特定目录中的所有隐藏文件和文件夹,可以使用以下命令:


Get-ChildItem -Path "C:\Documents" -Hidden

此命令将从“C:\Documents”文件夹中检索所有隐藏文件和文件夹。同样,使用“ReadOnly”和“System”开关分别获取只读项目和系统文件和文件夹。我们还有 Attributes 参数,其值包括存档、加密、压缩、设备、临时等,以根据指定属性进行过滤。

从注册表中检索数据

您还可以使用 Get-ChildItem 从注册表中检索数据。注册表是一个分层数据库,用于存储 Windows 操作系统和应用程序的配置设置。您可以使用-Path参数指定要从中检索内容的注册表项的路径。例如,如果要检索特定注册表项的所有子项和值,可以使用以下命令:


Get-ChildItem -Path HKCU:\Software\Microsoft\Office

此命令将从注册表当前用户部分的 Office 项中检索所有子项和值。

从证书存储中检索数据

您还可以使用 Get-ChildItem 从证书存储中检索数据。证书存储是在 Windows 操作系统上管理数字证书的中心位置。您可以使用-Path 参数指定要从中检索内容的证书存储的路径。例如,您可以使用以下命令从当前用户的个人存储中检索所有证书:


Get-ChildItem -Path Cert:\CurrentUser\My

此命令将从当前用户的个人存储中检索所有证书。

有效使用 Get-ChildItem 的提示和技巧

Get-ChildItem cmdlet 是 PowerShell 中一个非常通用的工具。它允许您列出和过滤文件和目录,提供高级定制和控制。以下是一些有用的提示和技巧,可帮助您有效地使用 Get-ChildItem:

  1. 使用通配符缩小搜索结果范围。
  2. 使用 -Recurse 参数搜索子文件夹。
  3. 使用 -Filter 参数将过滤器应用于搜索结果。
  4. 使用 -File 参数仅检索文件。
  5. 使用 -Directory 参数仅检索文件夹。
  6. 使用 -Exclude 参数从搜索结果中排除某些文件类型。
  7. 使用 -Ininclude 参数可在搜索结果中仅包含某些文件类型。
  8. 使用 FullName 属性显示文件和文件夹的完整路径。
  9. 使用 Measure-Object cmdlet 计算文件夹中的文件数量。
  10. 使用高级过滤选项来排序、分组和选择特定属性。

结论

Get-ChildItem 是一个多功能 PowerShell cmdlet,可用于从各个位置检索数据,包括文件系统、注册表和证书存储。它提供了许多选项来搜索文件和文件夹、显示其属性以及对其执行操作。在本综合指南中,我们介绍了 Get-ChildItem 的语法、参数和实际示例。通过使用 Get-ChildItem 提供的不同参数和选项,您可以轻松过滤、排除和递归项目以满足您的特定要求。

无论您是 PowerShell 新手还是经验丰富的用户,Get-ChildItem 都是您将经常使用的重要 cmdlet。借助从本综合指南中获得的知识和技能,您可以更加高效地编写 PowerShell 脚本!

经常问的问题:

PowerShell 中的 get-item 和 Get-ChildItem 有什么区别?

在 PowerShell 中,您可以使用 Get-Item 检索有关特定项目(例如文件或目录)的信息。另一方面,您可以使用 Get-ChildItem 检索指定目录中的子项列表。因此,虽然 Get-Item 专注于单个项目,但 Get-ChildItem 提供了目录中多个项目的更广泛视图。

如何在 PowerShell 中获取隐藏文件和系统文件?

要在 PowerShell 中获取隐藏文件和系统文件,可以使用带有 -Force 参数的 Get-ChildItem cmdlet。这将在输出中包括隐藏文件和系统文件。例如,您可以使用以下命令:Get-ChildItem -Force

如何使用 Get-ChildItem 在 PowerShell 中获取目录大小?

要使用 Get-ChildItem cmdlet 获取 PowerShell 中目录的大小,可以使用以下命令:
(Get-ChildItem -Path "C:\Temp" -Recurse | Measure-Object -Property Length -Sum).Sum
这将递归计算给定目录“C:\Temp”中所有文件的大小,并以字节为单位显示总大小。

如何在 PowerShell 中使用 Get-ChildItem cmdlet 仅获取文件夹?

要在 PowerShell 中使用 Get-ChildItem cmdlet 仅获取文件夹,可以使用“-Directory”参数。此参数仅过滤结果以包含目录或文件夹。例如,要检索当前目录中的文件夹列表,您可以使用命令“Get-ChildItem -Directory”。

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

取消回复欢迎 发表评论:

关灯