stop - powershell use try catch
Powershell: $ LASTEXITCODE en una funciĆ³n (3)
Porque se supone que no debes configurar variables automáticas como esa. Está creando una variable local y anulándola. Elimine la línea $LASTEXITCODE = $null
y obtendrá el resultado esperado. O puede hacer $global:LASTEXITCODE = $null
Hola, estoy notando un comportamiento extraño con el siguiente fragmento de código
function test
{
$LASTEXITCODE = $null
ping asdfs
Write-Host "Last exitcode: $LASTEXITCODE"
}
test
Write-Host "Last exitcode: $LASTEXITCODE"
El resultado de esto es
Ping request could not find host asdfs. Please check the name and try again.
Last exitcode:
Last exitcode: 1
¿Por qué $ LASTEXITCODE no se establece dentro de la función de prueba ()?
Esto es una generalización de un problema que estoy teniendo ahora, cuando llamo a un Win32 .exe desde dentro de una función y el $ LASTEXITCODE no devuelve el valor que estoy esperando dentro de una función
Está asignando un valor a $ LASTEXITCODE dentro del alcance de la prueba de función, donde realmente está establecido. La última línea de salida enumera $ LASTEXITCODE como 1, porque abandonó el alcance de la prueba de función y el valor asignado a $ LASTEXITCODE dentro de ese alcance ya no tiene ningún interés.
Como ya mencionó Manojlds, puede establecer la variable globalmente, si desea lograr ese resultado.
No estoy seguro de que me guste configurar $ LASTEXITCODE directamente ... probablemente sea mejor dejar que el sistema interno lo haga:
cmd /c "exit 0" #Reset $LASTEXITCODE between runs while debugging