У меня есть сценарий, в котором этот код не удается, с выходным кодом -2145124322Загрязненная трубопровода и устранение неисправностей
$new.ExitCode > $null
$filePath = "wusa.exe"
$argumentList = "`"\\PX_SERVER\Rollouts\Microsoft\VirtualPC\Windows6.1-KB958559-x64-RefreshPkg.msu`" /quiet /norestart"
$exitCode = (Start-Process -FilePath:$filePath -argumentList:$argumentList -wait -errorAction:Stop -PassThru).ExitCode
Write-Host $exitCode
Теперь основной сценарий имеет около 15000 строк «другие вещи происходит», и эти линии, где первоначально не так точно. Переменные вытягиваются из XML, есть проверка данных и блоки try/catch, всевозможные вещи. Итак, я начал вытаскивать соответствующие строки и помещал их в маленький отдельный скрипт и жестко закодировал переменные. И там, это работает, я получаю хороший код выхода 3010 и выхожу на гонки. Итак, я взял свой рабочий код, жестко закодированные переменные и все, и вставил его обратно в исходный скрипт, и он снова ломается. Итак, я переместил код из функции, где он принадлежит, и просто положил его после инициализации всего и до того, как я начал работать через основной цикл. И там это работает! Теперь я считаю, что это обычный «загрязненный трубопровод», но, если я смогу понять, что может это сделать. Мой следующий шаг, я думаю, это просто начать шаг за кодом, отбросив этот самородок где-то, запустите тест, если он работает, переместите его дальше, повторите попытку. Gack! Итак, прыгая кто-то имеет некоторые идеи. Или то, что может быть, или, возможно, улучшенный протокол тестирования. Или какой-то трюк, чтобы увидеть весь трубопровод и как-то признать загрязнение.
FWIW, я обычно работаю с PoSH v2, но я пробовал это с v4 с точно такими же результатами. Но, возможно, есть некоторая функция мониторинга трубопровода в более поздней версии, которая может помочь в устранении неполадок?
Кроме того, я понимаю, что PoSH v2 имеет проблемы с отрицательными кодами возврата, поэтому им нельзя доверять. Но я думаю, что новые версии исправили это, правильно? Итак, тот факт, что я получаю один и тот же код в v4, означает, что он имеет смысл для Google? Не то, чтобы я до сих пор нашел какой-либо намек на этот код выхода.
Скрещенные пальцы.
EDIT: ОК, немного больше данных. Я искал код выхода без ... и с DuckDuckGo вместо Google, и нашел это. 0x8024001E -2145124322 Операция WU_E_SERVICE_STOP не завершена, так как служба или система были отключены. OK, это в определенном направлении. И у меня есть код, который позволит мне временно убить службу. Но это кажется немного драконовским. Разве это не все, как 10-й способ установить обновления от Microsoft, которые должны были упростить автоматизацию? В любом случае, я не могу найти никаких признаков наличия флагов командной строки для WUSA, которые могли бы избежать проблемы, но я должен полагать, что я делаю что-то неправильно.