仅使用 Powershell 为特定文件类型生成哈希码

Generating hashcodes for specific filetypes only with Powershell

我完全是 Powershell 和脚本的初学者,并且已经成功地使用 Out-GridView 来显示我目录中文件的一些属性,方法如下:

dir D:\Folder1$type -Recurse | Select Fullname,Directory,LastWriteTime | out-gridview

例如,我用 $type = "*.pdf" 指定文件扩展名。

我也想开始使用哈希码比较文件,所以我试过这个命令:

ls | Get-Filehash

但是,我希望输出 window 中的哈希码作为带有 out-gridview 的单独列。这可能吗?我试过了

dir D:\Folder1$type -Recurse | Select Fullname,Directory,LastWriteTime,Filehash | out-gridview

dir D:\Folder1$type -Recurse | Select Fullname,Directory,LastWriteTime | Get-Filehash | out-gridview

当然这些都行不通。

有没有人有办法只为特定的文件扩展名生成哈希码?

非常感谢!

您可以使用计算得出的 属性 和 Select-Object:

Get-ChildItem -Path 'D:\Folder1$type'-Recurse |
    Select-Object FullName,Directory,LastWriteTime, @{Label='FileHash'; Expression={(Get-Filehash -Path $_.FullName).Hash}} |
        Out-GridView

您应该会在网格视图中看到一个名为 'Filehash' 的新列,其中包含文件的 SHA256 哈希值。您可以使用 Get-FileHash.

-Algorithm 参数更改算法(例如,MD5)

如果您想知道这是做什么的,重要的部分是:

@{...} 表示哈希表。例如一组键值对

label 是定义您的 属性(列名)在网格视图中的内容的键

expression定义了计算这个属性

值的代码片段({...}

$_ 表示我们正在处理沿管道传递的 'current' 对象(在本例中为文件)