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

PowerShell中如何同时展开Hash与Path属性并输出文件信息?

PowerShell提取文件大小、MD5哈希与文件路径的格式化输出问题

执行以下PowerShell代码:

get-childitem -path "E:\Test 1" -Recurse -File | foreach-Object { $fsize=(get-Item $_.FullName).Length ; $hash=(get-FileHash $_.Fullname -Algorithm MD5 | Select-Object Hash,Path ); write-host $fsize $hash }

得到的输出为:

18 @{Hash=2FC4C77B6792F3DA856E77486F849105; Path=E:\Test 1\file 1.txt}

需要实现直接显示文件大小、文件哈希和文件路径,格式如下:

18 2FC4C77B6792F3DA856E77486F849105 E:\Test 1\file 1.txt

已知-ExpandProperty只能展开单个属性,仅展开Hash的代码可正常运行:

get-childitem -path "E:\Test 1" -Recurse -File | foreach-Object { $fsize=(get-Item $_.FullName).Length ; $hash=(get-FileHash $_.Fullname -Algorithm MD5 | Select-Object Hash,Path -ExpandProperty Hash); write-host $fsize $hash }

输出结果:

18 2FC4C77B6792F3DA856E77486F849105

但-ExpandProperty无法同时指定多个属性,以下代码无法运行:

get-childitem -path "E:\Test 1" -Recurse -File | foreach-Object { $fsize=(get-Item $_.FullName).Length ; $hash=(get-FileHash $_.Fullname -Algorithm MD5 | Select-Object Hash,Path -ExpandProperty Hash,Path); write-host $fsize $hash }

解决方案

无需使用-ExpandProperty,直接访问Get-FileHash返回对象的Hash和Path属性即可,同时可以简化文件大小的获取(直接用$_对象的Length属性,无需重复调用Get-Item):

Get-ChildItem -Path "E:\Test 1" -Recurse -File | ForEach-Object {
    $fileSize = $_.Length
    $hashInfo = Get-FileHash $_.FullName -Algorithm MD5
    Write-Host $fileSize $hashInfo.Hash $hashInfo.Path
}

也可以使用字符串格式化来确保输出格式统一:

Get-ChildItem -Path "E:\Test 1" -Recurse -File | ForEach-Object {
    $fileSize = $_.Length
    $hashInfo = Get-FileHash $_.FullName -Algorithm MD5
    Write-Host ("{0} {1} {2}" -f $fileSize, $hashInfo.Hash, $hashInfo.Path)
}

两种方法均可得到期望的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:17:16