Saya memiliki dua file dalam direktori yang sama. Saya ingin membandingkan hash, Release.zip dan release821hash.txt

Perintah pertama yang harus saya gunakan adalah get-filehash Release.zip -a md5 Perintah kedua yang harus saya gunakan adalah get-content release821hash.txt

Saya kemudian harus menggunakan -eq untuk membandingkan hash, sebagaimana didefinisikan per persyaratan lab:

1. Type "new hash" -eq "known hash" and press Enter to determine whether the
file hashes match.
■ The new hash is the hash generated by the get-filehash file_name -a
md5 command.
■ The known hash is the hash generated by the get-content
file_name.txt command.
■ Include the quotation marks and the file extensions with the file names
in the commands.

Namun powershell saya membuat kesalahan. Saya telah mencoba menggunakan segala cara yang mungkin untuk membandingkan menggunakan -eq tetapi terus-menerus menimbulkan kesalahan. Apa yang saya lakukan salah? Saya telah mencoba menggunakan tanpa kutipan, kutipan hanya di sekitar perintah "get", dan menggunakan satu kutipan untuk seluruh baris.

d

1
hydra-bslash-0 12 Mei 2021, 07:35

1 menjawab

Jawaban Terbaik

Get-FileHash mengembalikan objek yang berisi, antara lain, hash. Untuk mendapatkan hash yang sebenarnya, Anda harus menggunakan properti Hash dari objek.

Jadi Anda bisa melakukannya

$fileHash = (Get-FileHash Release.zip -a md5).Hash

Get-Content mungkin mengembalikan satu string tetapi juga mungkin mengembalikan array string, tergantung pada baris baru yang ada dalam file yang Anda baca. Dengan asumsi file hanya berisi hash, berikut ini mungkin cukup:

$checkHash = Get-Content release821hash.txt

Menjahit keduanya bersama-sama, cek Anda bisa jadi

$fileHash -eq $checkHash

Atau

((Get-FileHash Release.zip -a md5).Hash) -eq (Get-Content release821hash.txt)

Catatan: jika Anda tahu hashnya sama, tetapi hasil pemeriksaannya salah, kemungkinan besar ada karakter tambahan di file release821hash.txt dan Anda harus menghapusnya dari string.

1
Lieven Keersmaekers 12 Mei 2021, 05:01