用于测试密码的 PowerShell 脚本 - $LASTEXITCODE

用于测试密码的 PowerShell 脚本 - $LASTEXITCODE

我在 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)
}

相关内容