powershell Get-ChildItem 结果数组

2023-12-11

(Get-ChildItem -File -Recurse -Path $path).Fullname返回全名数组(Get-ChildItem -File -Recurse -Path $path).Name返回文件名数组 但(Get-ChildItem -File -Recurse -Path $path).Length仅返回一个值 - 元素计数

问题 - 如何获取文件长度数组形式的结果?


来补充Mathias R. Jessen 的有用答案:

tl;dr

使用.ForEach()数组法实现简洁且高性能的解决方案:

# Return the files' .Length property values as a collection.
(Get-ChildItem -File -Recurse -Path $path).ForEach('Length')

正如马蒂亚斯的回答所指出的,类型本机属性- 例如.Length在数组实例上 -取得优先权越过所谓的成员访问枚举你试图执行的 - 也就是说,你想要收集.Length的属性值elements你的集合(数组;System.IO.FileInfo实例输出Get-ChildItem),并将它们作为 ([object[]]) array.

  • GitHub 问题 #7445讨论了这种情境模糊性并建议引入一个专职操作员, say %.以便您可以明确要求either定期财产访问or成员访问枚举。

成员访问枚举的一个可能令人惊讶的方面是它适用于管道逻辑在那它根据情况返回一个标量,即如果集合恰好包含one element.

  • E.g., @(Get-Date).Year.GetType().Name返回一个System.Int32, not Object[],表示整数而不是(单个元素)array返回包含一个整数。
  • GitHub 问题 #6802讨论这个。

成员访问枚举不仅方便,而且fast,因为它避免了循环/枚举在 PowerShell 代码中.

使用ForEach-Object or Select-Object cmdlets,如马蒂亚斯的回答所示,绝对是a 功能性的 but slow解决方法由于使用了在给定情况下无法使用成员访问枚举pipeline,这对于输入来说不是必需的已经完整地存入记忆中.

所以,使用.ForEach() array method- 使用重载,您只需指定目标属性name ('Length') - 是一个简洁且性能更好的替代方案.

  • Note: Unlike with member-access enumeration, the return value from .ForEach() is always a collection, albeit not an array: it is of type [System.Collections.ObjectModel.Collection[psobject]], which, however, will behave like an array in most contexts.[1]

[1] Unlike an array, this type of collection is extensible (you can add or remove elements). Due to the element type being [psobject], each element is typically invisibly wrapped in this type; e.g., 42 -is [psobject] is $false, but @(42).ForEach({ $_ })[0] -is [psobject] is $true. Unfortunately, there are cases where this near-invisible wrapper results in different behavior - see GitHub issue #5579.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

powershell Get-ChildItem 结果数组 的相关文章

随机推荐

  • 将几个不连续的列放入数组中

    我尝试尽可能高效地将 4 列加载到数组中 我试过 dim ar ar sheet1 Range C2 C2681 G2 G2681 J2 J2681 T2 T2681 但只有第一列被加载到数组中 我也尝试过 ar Range C2 T la
  • 是否可以使 col-md-3 彼此更靠近或居中? [复制]

    这个问题在这里已经有答案了 是否有可能使 col md 3 彼此更接近 这是我的代码 div class container div class row div class col md 3 p Lorem ipsum dolor sit
  • Eclipse 中的 Android 应用程序问题

    我是一名 NET 开发人员 但我喜欢 JAVA 所以在空闲时间我会使用它 我通常不使用 Eclipse 但我安装了 ADT eclipse 插件和 Andriod SDK 然后我开始学习 我用 TableLayout 制作了一个新项目 它看
  • $("#id").load 和 $.ajax 之间的区别?

    有谁知道有什么区别 id load and ajax 让我为您澄清一下 ajax 是 jQuery 提供的基本和低级 ajax 函数 这意味着您可以做任何您想做的事情XmlHttpRequest目的 但曾几何时 jQuery 开发者认为实际
  • 在 GraphQL 模式中创建类型时是否可以重命名字段?

    当定义userType在服务器上的以下 GraphQL 模式中 如何将 名称 字段重命名为 名字 同时仍然引用中的 名称 字段fakeDatabase 以下代码片段是从官方 GraphQL 文档 var express require ex
  • 为什么我每隔一天都会收到“太多获取失败”信息

    当我们运行两个处理大约 400 GB 数据的大猪作业时 我会从一个或其他任务跟踪器中收到此错误 我们发现 在杀死作业并使集群保持沉默一段时间后 一切又恢复正常 请提出真正的问题是什么 解决办法 修改datanode节点的 etc hosts
  • Magento 将产品批量分配到类别

    正如标题所示 我需要将产品批量分配到一个类别 并且从管理员那里我一次只能编辑一个产品 我不知道为什么从类别页面的 类别产品 选项卡中批量添加它们不起作用 这就是为什么我需要另一种快速的方法 例如使用 phpMyAdmin 或类似的方法 有什
  • Android 上的 MongoDB

    有谁知道 MongoDB 如何在 Android 上运行 它可以在本地工作并且数据稍后会被复制吗 是否只能通过网络后端在线工作 MongoDB 有几个版本的下载操作系统 然而 Android 并不是这些系统之一 人们使用 MongoDB 作
  • 如何将二进制文件的全部内容保存到 postgres 数据库中?

    我正在尝试将二进制数据保存到 postgres 中 部分代码如下所示 string readFile2 const string fileName ifstream ifs fileName c str ios in ios binary
  • 使用按钮更改另一个类的某些内容的状态

    我是 React 新手 很难理解状态的概念 下面我从 MUI 导出一个步进器 我使用状态 export default function CustomizedSteppers const steps Zoninfo Betals tt B
  • 为什么不能在函数文字中为变量分配占位符?

    我无法理解函数文字中的下划线 val l List 1 2 3 4 5 l filter gt 0 工作正常 l filter gt 0 工作正常 l filter val x 1 1 3 gt 0 ie you can have mult
  • 使用 `seaborn.objects` 堆叠到 100%

    我正在尝试绘制一个图 其中条形或区域使用新的比例调整为 100 seaborn objects界面 我似乎无法理解so Norm 工作 无论有没有by 这是我到目前为止所得到的 import seaborn as sns import se
  • 测试向量的所有元素是否相等

    我想测试非空向量是否包含相同的元素 这是最好的方法吗 count vecSamples begin 1 vecSamples end vecSamples front vecSamples size 1 在 c 11 中 或升压算法 std
  • Pygame OpenGL 3D 立方体滞后

    我正在关注 pyOpenGL 上相当老的教程系列 我正在做的和他完全一样 然而我遇到了延迟 我有带有 8GB 内存的 AMD FX 6300 GTX 1050ti 并且文件存储在闪存驱动器上 我读过一些地方使用glBegin and glE
  • 八顶点立方体的法向量

    我正在使用 WEBGL 今天遇到了我的立方体顶点法线的问题 我用立方体网格检查了我的代码来自互联网而且效果很好 问题是 来自互联网的立方体有 24 个顶点 每个面 4 个顶点 6 个面 我认为这对于我的立方体来说太多了 摆弄我的立方体 Fi
  • 如何查询DOTNET_CLI_TELEMETRY_OPTOUT是否永久设置为TRUE?

    如果我输入 set DOTNET CLI TELEMETRY OPTOUT 1 or setx DOTNET CLI TELEMETRY OPTOUT 1 要永久保存此设置 则应将设置 DOTNET CLI TELEMETRY OPTOUT
  • 如何在CSV文件中同时转义逗号和双引号?

    我正在编写一个 Java 应用程序以将数据从 Oracle 导出到 csv 文件 不幸的是 数据的内容可能相当棘手 逗号仍是分隔符 但行上的某些数据可能如下所示 ID FN LN AGE COMMENT 123 John Smith 39
  • 阻止过期的访问令牌从资源服务器检索数据

    我一直在摆弄 IDS 4 但遇到了一个小问题 我将令牌生命周期设置为大约 15 秒 即使它们已过期 我仍然可以从资源服务器检索日期 如果我从客户端调用的标头中删除令牌 则会收到 401 错误 Client Authorize public
  • 尝试替换数据框中的特定值,但不覆盖它

    我的数据框看起来像这样orders total price amount side 0 0 003019 100 bids 0 0 003143 100 asks 当我尝试通过执行以下操作来替换特定值时 orders total order
  • powershell Get-ChildItem 结果数组

    Get ChildItem File Recurse Path path Fullname返回全名数组 Get ChildItem File Recurse Path path Name返回文件名数组 但 Get ChildItem Fil