Как установить обновления kb * Windows с помощью пакетного скрипта, если он еще не установлен? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть тонны клиентов FortiClient, которые мне нужно установить на отдельные компьютеры, у каждого клиента есть собственный P C дома, а у некоторых из них Windows 7 32-битный. (Да, я даже видел XP.)

Мне удалось создать пакетный скрипт, который установит бесплатный FortiClient со всей конфигурацией внутри, импортировав ключ реестра в начале скрипта, и это отлично работает, но на Windows 7 32-битной, вы можете установить его, только если у вас установлены Windows обновления, установленные ранее.

Итак, я пришел к выводу, что могу создать пакет файл, который будет проверять, установлен ли KB или нет.

Так вот код:

@echo off
Pushd "%~dp0"
wmic qfe get hotfixid | find "KB3033929"
if %errorlevel% neq 1 ECHO KB3033929 Found
if %errorlevel% equ 1 ECHO KB3033929  NOT Found, installing KB3033929
(
    wusa .\Windows6.1-KB3033929-x86.msu /quiet /norestart
)
regedit /s .\korona.reg
msiexec.exe /qb /i "%~dp0FortiClient.msi"  /norestart INSTALLLEVEL=3
pause

Но каждый раз, когда я запускаю код, я получаю сообщение об ошибке, что синтаксис неправильно, хотя я запускаю только строку с командой wusa.

PS: Если у вас есть другие идеи, это было бы здорово - я не хочу использовать PowerShell.

1 Ответ

1 голос
/ 20 марта 2020

Ваш if синтаксис неправильный:

if %errorlevel% equ 1 ECHO KB3033929  NOT Found, installing KB3033929

(
  wusa .\Windows6.1-KB3033929-x86.msu /quiet /norestart

)

, вероятно, должен быть

if %errorlevel% equ 1 (
  ECHO KB3033929  NOT Found, installing KB3033929
  wusa .\Windows6.1-KB3033929-x86.msu /quiet /norestart
)
...