0

コンピューター上のフォルダー (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比較のためにプロパティを使用する必要があることはわかっています。

どうやって始めたらいいのかわからない。さらに必要な情報がある場合は、お知らせください。

4

1 に答える 1

0

私はあなたが立ち往生している場所について迷っています。フォルダー内のファイルが必要で、「フォルダー powershell 内のファイル」をグーグルで検索していない場合...何をしていますか?

前の 2 つの質問と回答には、if / 等価テスト、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)"
    }
}
于 2014-03-21T05:39:01.707 に答える