我想知道是否有人可以给我一些见解,了解如何设置一个脚本来查看计算机上的文件夹(例如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
属性进行比较。
我不知道如何开始。如果您需要更多信息,请告诉我。
答案 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)"
}
}