Tengo este código en el script de 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 siempre es 99 después de la llamada a TCPath, por lo que el script siempre se imprime YES
. Call to TC no está cambiando nada en $ LASTEXITCODE. ¿Qué debo hacer para obtener el código de salida de TrueCrypt?
powershell
truecrypt
pbies
fuente
fuente
IF ($LASTEXITCODE -eq 99)
? Si espera un bool e intenta convertir el valor en un bool.-5 .. 5 |%{if ($_) {write-host "yes $_"} else {write-host "no $_"} }
para ver a qué me refiero.0
. Para saber cuál es realmente el valor, debewrite-host "Yes $LASTEXTICODE and $?"
hacerlo en lugar de solo SÍRespuestas:
Entonces, después de mucha investigación, puedo ver que TrueCrypt no puede establecer $ LASTEXITCODE y el problema no puede resolverse con $ ?. Entonces, la única forma de probar las contraseñas es un archivo por lotes. Un revestimiento es suficiente:
fuente
La solución adecuada para la recuperación correcta del código de salida de TC es utilizar el comando Start-Process.
fuente