我在 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
}
}
调用 TCPath 后,$LASTEXITCODE 始终为 99,因此脚本始终打印YES
。调用 TC 不会更改 $LASTEXITCODE 中的任何内容。我应该怎么做才能从 TrueCrypt 获取退出代码?
答案1
因此,经过大量研究,我发现 TrueCrypt 无法设置 $LASTEXITCODE,并且该问题无法通过 $? 解决。因此,测试密码的唯一方法是批处理文件。一行代码就足够了:
@FOR /F "tokens=*" %%A IN (passwords.txt) DO @"C:\Program Files\TrueCrypt\TrueCrypt.exe" /a /s /l z /q /v container.tc /p "%%A" & echo %%A
答案2
从 TC 正确检索退出代码的正确解决方案是使用 Start-Process 命令。
$process = (Start-Process -FilePath "$TrueCrypt" -ArgumentList "/a /s /q /l z /m ro /v $container /p $password" -PassThru -Wait)
if ($process.ExitCode -eq 0)
{
success($password)
}