用 Shell COM 对象读取文件扩展属性(资源管理器详情)
被遗忘的 Shell.Application GetDetailsOf 技巧:一条命令列出资源管理器"详细信息"里的全部文件属性。
创建 Shell.Application,用 Namespace 打开文件夹、ParseName 取文件,然后循环 0-320 列调用 GetDetailsOf。
01命令
命令
$ $sh=New-Object -ComObject Shell.Application; $folder=$sh.Namespace('C:\Users\me\Pictures'); $file=$folder.ParseName('photo.jpg'); 0..320 | ForEach-Object { $n=$folder.GetDetailsOf($null,$_); $v=$folder.GetDetailsOf($file,$_); if($v){ '{0}: {1}' -f $_,$n+' = '+$v } }02作用说明
PowerShell 的 Get-Item 只能看到文件系统元数据,而资源管理器会通过 Windows 属性系统读取数百个扩展属性(相机型号、视频时长、比特率、尺寸等)。旧版 Shell.Application COM 对象按数字列索引暴露这些属性,循环输出即可看到索引、列名和值。列索引在不同 Windows 版本间略有差异,所以同时打印列名才是可靠的发现方式。
03风险
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- Windows Property System依据: Describes the extended property system Explorer displays (camera model, dimensions, duration, authors), which GetDetailsOf surfaces by column index.
- FolderItem object (Shell)依据: Documents the FolderItem returned by Folder.ParseName and its interaction with the Shell folder metadata surface.
最后验证: 2026-09-17 · 分类: 媒体