Help about_Automatic_Variables:
$LastExitCode
Contains the exit code of the last Windows-based program that was run.
The typical use case, assuming 0 is for success:
<invoke a program>
if ($LastExitCode -eq 0) {
<success>
}
else {
<failure>
}The above pattern has some vulnerability and may work incorrectly. It turns out
<invoke a program> sets the global automatic variable. Thus, ideally, exactly
the global variable should be checked, i.e. $global:LastExitCode. Otherwise,
if for some reason (mistake) a parent scope sets its own variable,
$LastExitCode = <something>, then this <something> will be returned
by $LastExitCode instead of the actual last exit code.
The script Test-1.problem.ps1 shows the issue.