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?
Confirma la condición.
—
pbies
No sé qué errorlevel devuelve truecrypt, pero a menos que sea 0 siempre obtendrá un "Sí". Ejecute esta línea
—
LotPings
-5 .. 5 |%{if ($_) {write-host "yes $_"} else {write-host "no $_"} }
para ver a qué me refiero.
TC devuelve 0 si el comando tuvo éxito, valor más alto si no. Esto es posible con errorlevel en el archivo por lotes, pero parece que no en el script PS.
—
pbies
Aparte de las dudas sobre su objetivo para estos scripts, no parece entender que el if en su script simplemente devuelve la condición $ true si $ LASTEXITCODE es cualquier cosa menos
—
LotPings
0
. Para saber cuál es realmente el valor, debe write-host "Yes $LASTEXTICODE and $?"
hacerlo en lugar de solo SÍ
IF ($LASTEXITCODE -eq 99)
? Si espera un bool e intenta convertir el valor en un bool.