创建一个powershell脚本,用于将文件夹中的文件版本与哈希表进行比较

时间:2014-03-21 03:07:23

标签: powershell hash fileversioninfo

我想知道是否有人可以给我一些见解,了解如何设置一个脚本来查看计算机上的文件夹(例如C:\ Windows \ System32)并能够查看文件夹中的文件与预定义的哈希表进行比较。

此哈希表将包含有关“system32”文件夹中找到的相同文件的信息,然后找到版本错误的文件。哈希表将包含文件及其版本。

示例:
advapi32.dll 6.1.7600.16385 comctl32.dll 6.1.7600.16385 comdlg32.dll 6.1.7600.16385 gdi32.dll 6.1.7600.16385

找到版本错误的文件后,输出会以表格格式列出相关文件。

我知道我必须使用[System.Diagnostics.FileVersionInfo]来查找有助于获取文件版本信息的方法。我知道我必须使用.productVersion属性进行比较。

我不知道如何开始。如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

我迷失了你被困的地方。如果您需要文件夹中的文件,并且您没有在Google文件夹中搜索“文件夹中的文件”,那么......您在做什么?

您之前的两个问题和答案包括:if / equality testing,gci(get-childitem),使用它来获取带路径的文件名,调用.Net框架函数。这大部分都是你需要的,他们所缺少的只是哈希表和循环:

$files = @(Get-ChildItem -File "C:\Windows\system32\")    #NB. @() forces a one-item answer to still be an array

foreach ($file in $files) {
    $fileVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($file.FullName).ProductVersion
    $hashVersion = $hash[$file.Name]

    if ($hashVersion -ne $fileVersion) {
        write "$($file.Name) is different (file: $fileVersion, expected: $hashVersion)"
    }
}