Powershell: $LASTEXITCODE в функции
Привет я замечаю некоторое странное поведение со следующим фрагментом кода
function test
{
$LASTEXITCODE = $null
ping asdfs
Write-Host "Last exitcode: $LASTEXITCODE"
}
test
Write-Host "Last exitcode: $LASTEXITCODE"
выход из это
Ping request could not find host asdfs. Please check the name and try again.
Last exitcode:
Last exitcode: 1
почему $LASTEXITCODE не установлен в функции test ()?
это обобщение проблемы, которую я имею прямо сейчас, когда я вызываю Win32 .exe из функции и $LASTEXITCODE не возвращает значение, которое я ожидаю от функции
3 ответов
потому что вы не должны устанавливать автоматические переменные, как это. Вы создаете локальную переменную и отрицание его. Удалить $LASTEXITCODE = $null
line и вы получите ожидаемый результат. Или вы можете сделать $global:LASTEXITCODE = $null
вы присваиваете значение $LASTEXITCODE внутри области функционального теста, где оно фактически установлено. В последней строке вывода отображается $LASTEXITCODE как 1, потому что вы оставили область функционального теста и значение, присвоенное $LASTEXITCODE внутри этой области, больше не представляет интереса.
Как уже указывал manojlds, вы можете просто установить переменную глобально, если хотите достичь этого результата.
Не уверен, что мне нравится устанавливать $LASTEXITCODE напрямую... вероятно, лучше позволить внутренним органам системы сделать это:
cmd /c "exit 0" #Reset $LASTEXITCODE between runs while debugging