Saya memiliki kode ini dalam skrip PowerShell:
$passwords = Get-Content "passwords.txt"
$TCPath = "c:\Program Files\TrueCrypt\TrueCrypt.exe"
$TCfile = "container.tc"
foreach ($password in $passwords)
{
$LASTEXITCODE=99
& $TCPath "/l z /s /q /p$password $TCfile"
if ($LASTEXITCODE)
{
write-host YES
}
else
{
write-host NO
}
}
$ LASTEXITCODE selalu 99 setelah panggilan ke TCPath, jadi skrip selalu dicetak YES
. Panggilan ke TC tidak mengubah apa pun dalam $ LASTEXITCODE. Apa yang harus saya lakukan untuk mendapatkan kode keluar dari TrueCrypt?
Ini mengkonfirmasi kondisinya.
—
pai
Saya tidak tahu apakah errorlevel truecrypt kembali - tetapi kecuali 0, Anda akan selalu mendapatkan "Ya". Jalankan baris ini
—
Lot,
-5 .. 5 |%{if ($_) {write-host "yes $_"} else {write-host "no $_"} }
untuk melihat apa yang saya maksud.
TC mengembalikan 0 jika perintah berhasil, nilai lebih tinggi jika tidak. Ini dimungkinkan dengan tingkat kesalahan dalam file batch, tetapi tampaknya tidak dalam skrip PS.
—
pai
Terlepas dari keraguan tentang tujuan Anda untuk skrip ini, Anda tampaknya tidak memahami bahwa jika dalam skrip Anda hanya mengembalikan kondisi $ true jika $ LASTEXITCODE sama sekali tidak
—
LotPings
0
. Untuk mengetahui nilai sebenarnya, Anda write-host "Yes $LASTEXTICODE and $?"
hanya perlu YA
IF ($LASTEXITCODE -eq 99)
? Jika menunggu bool dan mencoba untuk melemparkan nilai ke bool.