如何正确格式化多个文件的Get-ItemProperty输出结果?
PowerShell获取DLL文件信息的格式化问题
我尝试用Get-ItemProperty获取DLL文件的详细信息,但没法把输出格式调整成理想样式。原代码如下:
$zz = (ls C:\Windows\System32\*.dll).FullName foreach ($f in $zz){ Get-ItemProperty -Path $f |Select -ExpandProperty VersionInfo |select ProductVersionRaw, OriginalFilename, FileDescription | ft -HideTableHeaders } # ... # 10.0.19041.867 vidreszr.dll Windows Media Resizer
输出存在这些问题:
- 内容未对齐
- 每个条目之间有两行空行
- 部分文件名缺失
问题:怎么正确格式化生成的表格?
更新
我有了一些进展,代码改成了这样:
& { foreach ($f in $zz){ Get-ItemProperty -Path $f |Select -ExpandProperty VersionInfo |select ProductVersionRaw, OriginalFilename, FileDescription } } | ft
但还是有部分文件的文件名信息缺失。
解决方案
感谢@n0rd的方案及相关搜索,我得到了理想结果:
$zz = (ls C:\Windows\System32\*.dll).FullName & { foreach ($f in $zz){ Get-ItemProperty -Path $f |Select Name, @{Name="CreationTime";Expression= {"{0:yyyy}-{0:MM}-{0:dd}" -f ([DateTime]$_.CreationTime)}} -ExpandProperty VersionInfo |select ProductVersionRaw, CreationTime, Name, FileDescription } } | sort -Property Name | ft
这个方案实现了:
- 将CreationTime格式改为
yyyy-MM-dd - 按真实文件名(
Name)排序 - 若要筛选特定的
ProductVersionRaw,可在| ft前插入:| ?{ $_.ProductVersionRaw -eq "10.0.19041.nnnn" }
内容的提问来源于stack exchange,提问作者not2qubit
相关产品推荐
相关产品推荐

