Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Результат установки обновления (http://forum.oszone.net/showthread.php?t=327607)

rene 15-06-2017 02:00 2744679

Результат установки обновления
 
Доброго времени суток!
Пытаюсь автоматизировать установку обновления для WindowsXP, но ни как не могу додуматься как определить успешность/ошибку установки. Например вот это:
Код:

\\share\WindowsXP\kb4012598_x86_RU.exe /quiet /warnrestart:1 /log:c:\WannaCrypt.log || echo Installation error %errorlevel%. See c:\WannaCrypt.log >> %log%
Всегда выдает
Код:

Installation error 0
даже в случае успешной установки. Помогите разобраться.

И еще попутный вопрос. Для успешной установки иногда приходится удалить ключ реестра
Код:

reg delete HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer /f > nul
но если этой ветки не существует выходить ошибка. Так вот, никак не получается подавить вывод ошибки, пытался отправлять в nul, не помогает. Временно сделал так
Код:

start reg delete HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer /f
но это просто костыль. Есть способы подавить сообщение? Или придется сначала проверять наличие ветки?

Iska 15-06-2017 02:50 2744683

Цитата:

Цитата rene
Всегда выдает »

  1. Всегда? По приведённому коду он должен «выдавать» только в случае ненулевого кода возврата («||»), а не «всегда». В случае нулевого — не должен выдавать ничего.
  2. А вот значение в приведёном коде %errorlevel% никогда не будет раскрываться в код возврата от kb4012598_x86_RU.exe, поскольку переменная окружения в данном виде раскрывается в момент начала исполнения команды. Всей команды. То есть — до начала исполнения kb4012598_x86_RU.exe. Хотите увидеть реальный код возврата — «setlocal enableextensions enabledelayedexpansion» в начало пакетного файла, сразу после «@echo off», и вместо «%errorlevel%» использовать «!errorlevel!». Либо задать использование отложенного раскрытия переменных окружения в реестре для командной строки по умолчанию. Либо вызывать командный процессор %comspec% с параметром «/v:on»:
Скрытый текст
Цитата:

/V:ON Разрешение отложенного расширения переменных среды с применением
символа '!' в качестве разделителя. Например, /V:ON разрешает
использовать !var! в качестве расширения переменной var во время
выполнения. Синтаксис var служит для расширения переменных
при вводе, что приводит к совсем другим результатам внутри
цикла FOR.


Цитата:

Цитата rene
И еще попутный вопрос. »

Не надо попутных. Один вопрос — одна тема.


Цитата:

Цитата rene
но если этой ветки не существует выходить ошибка. Так вот, никак не получается подавить вывод ошибки, пытался отправлять в nul, не помогает. »

Не то перенаправляете.
Код:

2>nul reg.exe delete "HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer" /f
В данном случае перенаправлять в пустое устройство нужно не стандартный поток вывода stdout, а стандартный поток ошибок stderr.

rene 15-06-2017 04:01 2744685

Эх, как много мне еще учиться. Спасибо за помощь!


Время: 13:53.

Время: 13:53.
© OSzone.net 2001-