Get-ChildItem
是由Powershell提供的非常有用的cmdlet。此cmdlet有两个主要用途。一种是,如果将目录作为参数提供,则给定的目录文件和文件夹将像循环一样枚举。其次,如果提供了一个列表或容器,那么我们将枚举所有子级。 让我们开始行动来了解细节。
语法
语法如下。
Get-ChildItem OPTIONS PATH
- 用于不同行为的选项
- 路径用于指定不带任何选项的路径。
救命
我们可以打印有关 Get-ChildItem
cmdlet如下所示。我们将使用 Get-Help
用于打印有关的帮助信息的cmdlet Get-ChildItem
.
PS> Get-Help Get-ChildItem

列出当前目录中的所有文件和文件夹
我们将从一个简单的示例开始,在这个示例中,我们不为 Get-ChildItem
cmdlet。这将打印当前工作目录中的所有文件和文件夹。
PS> Get-ChildItem

我们可以看到提供了以下信息。
- 读、写、执行等模式
- 最后写时间
- 指定大小的长度
- 姓名
仅显示给定的扩展名
在本例中,我们将只显示具有特定扩展名的文件。我们可以在cmdlet之后提供扩展。在本例中,我们将列出可以指定为 *.sys
就像下面一样。
PS> Get-ChildItem *.sys

我们也可以使用 -Path
选项我们也可以提供如下扩展。
PS> Get-ChildItem -Path *.sys

指定路径
默认值 行为 Get-ChildItem
正在当前工作目录上运行。如果要在不同的路径中运行此cmdlet,可以使用 -Path
选项。在本例中,我们将在 Windows
目录中的 C:
隔板 就像下面一样。使用双引号 将使路径规范更加稳定,因为路径中的空格可能会产生问题。
PS> Get-ChildItem -Path "c:Windows"

递归列表
默认行为是列出要列出的当前工作目录或路径。如果我们想列出子文件和子文件夹,我们需要以递归的方式列出。我们可以使用 -Recurse
选项如下。
PS> Get-ChildItem -Recurse

我们可以看到有些错误以红色打印,因为我们没有访问此路径的权限。
指定递归深度
通过指定递归,我们可以让 Get-ChildItem
命令列出所有子文件和子文件夹。 这意味着递归列表将转到100级(如果存在)。 这可能会产生一些性能或输出问题。我们可以使用 -Depth
选项。我们将提供一个像5这样的数字级别。在这个例子中,我们将只列出像下面这样的1的深度。
PS> Get-ChildItem -Recurse -Depth 2
排除某些文件
在列出时,我们可能需要根据文件名或扩展名排除一些文件。我们将使用 -Exclude
选项并提供文件或文件夹名称。在本例中,我们将根据其扩展名排除其中包含的文件 *.sys
分机。
PS> Get-ChildItem -Exclude "*.sys"
包括文件和扩展名
在根据文件名和扩展名排除某些文件的同时,我们还可以使用 -Include
选项。在本例中,我们将排除 *.tmp
扩展名,但包含名为 check
甚至连他们的分机都是 *.tmp
.
PS> Get-ChildItem -Exclude "*.tmp" -Include "*check*"
列出所有注册表项
Get-ChildItem
cmdlet可以通过使用 HKLM
到 -Path
选项。我们可以列出所有注册表项如下。我们将在 Software
本例中的配置单元。
PS> Get-ChildItem -Path HKLM:Software

列出所有证书
另一个有用的功能 Get-ChildItem
cmdlet正在列出当前安装和使用的证书。我们将使用 -Path
与 Cert
参数如下。
PS> Get-ChildItem -Path Cert:

仅列出文件和文件夹的名称
的默认行为 Get-ChildItem
cmdlet正在列出文件名和其他属性,如大小、模式等。如果我们只想列出需要提供的文件名 -Name
选项如下。
PS> Get-ChildItem -Name
