Показать полную графическую версию : [решено] Установка обновления KB943729
Добрый день господа. Необходим скрипт, неважно на чем! Скрипт будет запускаться при логоне через GPO.
Условия:
1. Скрипт должен отрабатывать только на системах с Windows XP;
2. Скрипт, после проверки версии Windows, должен устанавливать вышеуказанный апдейт;
3. После успешной установки апдейта необходима перезагрузка;
4. Если KB уже установлен - пропуск работы скрипта.
Файл с kb943729 называется так:
Windows-KB943729-x86-RUS.exe
Буду очень признателен за Ваши изящные решения)
Нашел вот такой скриптик:
@echo off
SET DC_NAME=dc.company.com
rem Check to see this is Windows XP
ver | find "Windows XP" >NUL
if errorlevel 1 goto end
rem Check to see if the update is already installed
reg QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP20\KB943729" >NUL 2>NUL
if errorlevel 1 goto install_update
goto end
:install_update
\\%DC_NAME%\kb943729\Windows-KB943729-x86-RUS.exe /passive /forcerestart
:end
Вроде как он имеет место быть? Пути конечно можно изменить - поставить к примеру папку sysvol
Скрипт будет запускаться при логоне через GPO. »
1. Скрипт должен отрабатывать только на системах с Windows XP;
2. Скрипт, после проверки версии Windows, должен устанавливать вышеуказанный апдейт; »
GPO фильтрация - Поиск в Google (https://www.google.ru/search?q=GPO+%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F).
3. После успешной установки апдейта необходима перезагрузка;
4. Если KB уже установлен - пропуск работы скрипта. »
wmic.exe qfe where "ServicePackInEffect='KB943729' AND HotFixID='File 1'" get ServicePackInEffect /value 2>nul | find.exe /i "KB943729" || start "" "\\server\share\KB943729\Windows-KB943729-x86-RUS.exe" /passive /warnrestart:10
Iska, если я все правильно вычитал, то фильтр будет следующим:
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "5.1%" AND ProductType = "1"
а в батник я засовываю ваш код:
Код:
wmic.exe qfe where "ServicePackInEffect='KB943729' AND HotFixID='File 1'" get ServicePackInEffect /value 2>nul | find.exe /i "KB943729" || start "" "\\server\share\KB943729\Windows-KB943729-x86-RUS.exe" /passive /warnrestart:10 »
HotFixID='File 1' - это просто для примера? что означает в данном случае "File 1"?
HotFixID='File 1' - это просто для примера? »
Нет.
что означает в данном случае "File 1"? »
Значение одного из ключей.
Читаете: Win32_QuickFixEngineering class (Windows) (http://msdn.microsoft.com/en-us/library/aa394391(v=vs.85).aspx). Видите, что ключами для экземпляров объектов данного класса являются:
HotFixID
Data type: string
Access type: Read-only
Qualifiers: Key, MaxLen (260)
Unique identifier associated with a particular update.
и
ServicePackInEffect
Data type: string
Access type: Read-only
Qualifiers: Key, MaxLen (260)
Потому нужно задавать в запросе их оба. И «HotFixID», и «ServicePackInEffect».
Можете ради интереса выполнить запрос вида:
wmic.exe qfe get HotFixID,ServicePackInEffect
и посмотреть на странности с именованием. Вопрос, почему было сделано так — в одном случае номер KB содержится в «HotFixID», в другом случае в «ServicePackInEffect» — не ко мне.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC