问题描述
我正在使用哈希图来获取一些文件名、md5 和路径详细信息 - 问题是我不认为我想要一个哈希图,因为我并不是真的在寻找键/值对,而是一个包含用于名称、全名和 md5 的列 - 实现此目的的最佳方法是 powershell?
这是我当前的代码,我想我可以使用它,但最终我不得不“替换”我最终 CSV 中不想要的所有 key= 内容。
$MD5Hashes = @{}
Get-ChildItem "C:\Users\Tony\Pictures\My Pictures\2009\03" -Recurse -File | ForEach-Object {
$MD5Hashes.Add($_.Name,(Get-filehash -Path $_.FullName -Algorithm MD5 | Select-Object -Property * -ExcludeProperty Algorithm ))
}
有没有一种简单的方法来获取 ChildItem 并且只用逗号分隔并换行每个名称、全名和 md5?
解决方法
使用 Select-Object
创建一个具有您想要的所有属性的对象,如下所示:
Get-ChildItem "C:\Users\Tony\Pictures\My Pictures\2009\03" -Recurse -File | select-object name,fullname,@{Name = "MD5"; Expression = {(Get-FileHash $_.FullName -Algorithm MD5).Hash}}
然后您可以使用 Export-CSV
将对象导出到 csv 文件中:
Get-ChildItem "C:\Users\Tony\Pictures\My Pictures\2009\03" -Recurse -File | select-object name,@{Name = "MD5"; Expression = {(Get-FileHash $_.FullName -Algorithm MD5).Hash}} | export-csv FilesWithHashs.csv -NoTypeInformation