You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell:如何排序System.IO.FileInfo数组并控制控制台输出

PowerShell排序FileInfo数组避免默认输出问题

问题原因

你执行的排序命令$queue | Sort-Object -property lastWriteTime未对输出做处理,PowerShell会自动将排序后的FileInfo对象数组以默认表格格式输出到控制台——这就是你看到1100+条目标格的原因。Out-Null无效是因为若仅单独执行带Out-Null的排序命令,后续未正确留存排序结果仍会触发输出;或是你直接执行排序命令却未将结果用于后续逻辑,导致排序输出被直接打印。

可行解决方案

方案1:将排序结果赋值给变量,再按需输出

先把排序后的数组存入变量避免直接输出,之后遍历变量输出指定字段:

# 排序结果存入变量,不会触发控制台输出
$sortedFiles = $queue | Sort-Object -Property LastWriteTime

# 遍历变量输出自定义内容
foreach ($file in $sortedFiles) {
    Write-Host "文件名: $($file.Name) | 最后修改时间: $($file.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss')) | 文件大小: $($file.Length) 字节"
}

方案2:直接通过管道串联排序与输出逻辑

无需单独赋值,直接将排序结果通过管道传给ForEach-Object,一次性完成排序和自定义输出:

$queue | Sort-Object -Property LastWriteTime | ForEach-Object {
    Write-Host "文件名: $($_.Name) | 最后修改时间: $($_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss')) | 文件大小: $($_.Length) 字节"
}

方案3:输出指定属性的格式化表格

若希望用表格形式展示,但仅显示需要的列,可通过Select-Object筛选属性后格式化:

$queue | Sort-Object -Property LastWriteTime | Select-Object Name, LastWriteTime, Length | Format-Table -AutoSize

内容的提问来源于stack exchange,提问作者aksarben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:33:37