У меня есть задача работает ртутный команду, которая терпит неудачу, потому что ртутный не возвращает 0, но 1.psake управления код ошибки
Когда ртутные возвращает 1 не означает, что это ошибка, но нет ничего, чтобы сделать. Согласно документации:
Returns 0 if push was successful, 1 if nothing to push.
Как я могу справиться возвращение в моей задаче так, когда команда возвращает 0 рт.ст. или 1 не сломается.
Вот неисправная функция
Function Invoke-HgBookmark([string]$bookmarkname)
{
$repo = GetCredentials
& $hg.file bookmark -f $bookmarkname
Invoke-Expression "$($hg.file) push -B $bookmarkname $repo"
if ($LASTEXITCODE -eq 0 -Or $LASTEXITCODE -eq 1)
{
return 0
}
else
{
return -1
}
}
Psake зовут свою функцию с этим кодом:
try {
$global:lastexitcode = 0
& $cmd
if ($lastexitcode -ne 0) {
throw ("Exec: " + $errorMessage)
}
break
}
Похоже, ваша функция пытается обработать код выхода из 1. Является ли функция возвращением '-1' или сбой каким-то другим способом? Если он возвращает '-1' - вставьте« Write-Host »$ LastExitCode« », чтобы узнать, какой код выхода вы получаете. Логика выражения 'if' выглядит хорошо. Кстати, что с Invoke-Expression? Я не понимаю, почему вы не можете вызывать $ hg.file, как в строке выше iex. –
На самом деле, я изучаю powershell ... Мне не нужно iex. Вернемся к моей проблеме. Я добавил код, который использует psake, и я не могу перезаписать $ lastexitcode в случае, если hg возвращает 1 – Swell
. А в этом случае попробуйте заменить 'Return x' на' $ LastExitCode = x'. –