当前位置: 首页 > 知识库问答 >
问题:

Get-ChildItem-排除参数如何工作?

强金鑫
2023-03-14

Get-ChildItem-排除参数如何工作?它遵循什么规则?

Get-Help for Get-ChildItem一点也不详细:

省略指定的项目。此参数的值限定路径参数。输入路径元素或模式,例如“*.txt”。允许使用通配符。

在Stackoverflow和其他方面,普遍的共识似乎是它太难使用,我们都应该通过管道将Get ChildItem的输出传递到Where对象。

虽然我愿意使用Where对象,但我对规则很好奇-排除如下。

例如,我有一个包含以下子文件夹的文件夹:

HsacFixtures
HsacFixturesBuild
RestFixture
RestFixtureBuild

如果执行以下命令:

Get-ChildItem $rootFolderPath -Exclude HsacFixturesBuild -Directory

它返回预期的结果:

HsacFixtures
RestFixture
RestFixtureBuild

但是,如果我添加-Recurse参数:

Get-ChildItem $rootFolderPath -Exclude HsacFixturesBuild -Directory -Recurse

然后返回HsacFixturesBuild文件夹中的子文件夹。

我还尝试了HsaFixturesBuild\HsaFixturesBuild\*,它们具有相同的结果。

那么,排除是否仅适用于直系子女,而不适用于孙子女或更深的子文件夹?

共有2个答案

公良阳波
2023-03-14

对于Get ChildItem,参数exclude作用于对象

通过以下示例可以更好地理解它:考虑以下文件夹结构

正如我们在上图中看到的,基于对象name文件夹被排除在外

现在我们可以看到文件夹的子文件夹仍然存在,因为排除应用于对象name

希望这有帮助。

邵博艺
2023-03-14

排除基于名称的子对象,

对于文件,获取文件的名称。对于目录,如果层次结构存在,则获取层次结构中最后一个目录的名称。否则,Name属性获取目录的名称

不是全名,

它获取目录或文件的完整路径

因此,即使对象是递归调用中的孙子对象,exclude也只查看对象的名称,而不是全名,因此exclude不会影响省略,除非子对象共享名称的公共子字符串,该子字符串恰好是exclude参数的一部分

来源获取-儿童项目

示例3:使用包含和排除获取所有子项

此命令列出。Logs子目录中的txt文件,但名称以字母A开头的文件除外。它使用通配符(*)表示Logs子目录的内容,而不是目录容器。由于该命令不包含Recurse参数,因此该命令不会自动包含目录的内容;您需要指定它。

Windows PowerShell

PS C:\> Get-ChildItem –Path "C:\Windows\Logs\*" -Include "*.txt" -Exclude "A*"
 类似资料:
  • 看着,我会数到3 语法Get-ChildItem[[-路径]][[-过滤器]][-排除][强制][包括][名称][递归][UseTransation[]][ Get-ChildItem[[-过滤器]][-排除][强制][包括][名称][递归][]LiteralPath[-UseTransation[]][ Get-ChildItem[-属性][目录][文件][强制][隐藏][只读][系统][Use

  • 假设我们有以下目录结构: 现在,假设~ dir00是当前目录。我本以为这两个命令会产生相同的结果。然而,事实并非如此。第二个人的行为是我所期望的。 我正在尝试编写一个小的工具库,用于我们的脚本化流程。我需要编写的一个工具是复制和备份文件集的工具。作为输入,我得到一些信息,告诉我要复制哪些文件/目录等。我无法知道用户可能会提供什么。它们可能会提供通配符,如“*”,它们可能会提供文件名,它们可能会提供

  • 对Powershell很陌生,希望有人能给我指明正确的方向。我想知道是否有一个更干净的方法来完成我下面的工作?如果我对第一次Get-ChildItem调用时返回的文件(存储在$items变量中)做了一些更改,那么有没有一种方法可以刷新到Get-ChildItem的内容? 在第一个foreach语句中,我为返回的所有文件创建一个日志签名。一旦那样做了,我需要做的是;再次获取列表(因为路径中的项已经更

  • 问题内容: 说我有 我明白 会导致 [(’Able’,10),(’Dog’,15),(’Baker’,20),(’Charlie’,20)]] 但这如何工作? 问题答案: 传递给您的函数将获得要排序的每个项目,并返回Python可以排序的“键”。因此,如果要按字符串的 相反顺序 对字符串列表进行排序,可以执行以下操作: 这使您可以指定每个项目的排序依据值,而不必更改项目。这样,您不必构建反向字符串

  • 问题内容: 对于内,怎么可以检索参数? 对于上面的简单示例,应为 但是它也应该适用于复杂的querystrngs … 问题答案: 与window.location对象。此代码为您提供了没有问号的GET。 从您的示例它将返回 编辑 :我自由地更改了Qwerty的答案,这确实很好** ,正如他指出的,我完全遵循OP的要求: 我从他的代码中删除了重复的函数执行,将其替换为变量(tmp),并且按照OP的要

  • 问题内容: 我有一个带有一些GET参数的URL,如下所示: 我需要获得的全部价值。我尝试读取该URL,但只有。如何使用JavaScript执行此操作? 问题答案: JavaScript 本身 没有内置处理查询字符串参数的内容。 在(现代)浏览器中运行的代码可以使用对象(它是浏览器提供给JS的API的一部分): 对于较旧的浏览器(包括Internet Explorer),您可以使用此polyfill