Script do PowerShell para testar senhas - $ LASTEXITCODE

0

Eu tenho este código no script do 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 é sempre 99 após a chamada para TCPath, portanto, o script está sempre imprimindo YES . A chamada para o TC não está alterando nada em $ LASTEXITCODE. O que devo fazer para obter o código de saída do TrueCrypt?

    
por pbies 11.12.2016 / 22:34

2 respostas

0

A solução adequada para a recuperação correta do código de saída do TC é usar o comando 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)
}
    
por 08.06.2018 / 08:17
0

Então, depois de muita pesquisa, eu posso ver que TrueCrypt não pode definir $ LASTEXITCODE e o problema não pode ser resolvido por $ ?. Portanto, a única maneira de testar senhas é um arquivo em lotes. Um forro é o suficiente:

@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
    
por 12.12.2016 / 13:54