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

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

Crush45 14-06-2014 20:37 2364089

Установка обновления KB943729
 
Добрый день господа. Необходим скрипт, неважно на чем! Скрипт будет запускаться при логоне через GPO.

Условия:
1. Скрипт должен отрабатывать только на системах с Windows XP;
2. Скрипт, после проверки версии Windows, должен устанавливать вышеуказанный апдейт;
3. После успешной установки апдейта необходима перезагрузка;
4. Если KB уже установлен - пропуск работы скрипта.

Файл с kb943729 называется так:
Windows-KB943729-x86-RUS.exe

Буду очень признателен за Ваши изящные решения)

Crush45 14-06-2014 21:23 2364102

Нашел вот такой скриптик:

Код:

@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

Iska 14-06-2014 22:54 2364129

Цитата:

Цитата Crush45
Скрипт будет запускаться при логоне через GPO. »

Цитата:

Цитата Crush45
1. Скрипт должен отрабатывать только на системах с Windows XP;
2. Скрипт, после проверки версии Windows, должен устанавливать вышеуказанный апдейт; »

GPO фильтрация - Поиск в Google.

Цитата:

Цитата Crush45
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

Crush45 15-06-2014 14:07 2364246

Iska, если я все правильно вычитал, то фильтр будет следующим:
Код:

SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "5.1%" AND ProductType = "1"
а в батник я засовываю ваш код:
Цитата:

Цитата Iska
Код:
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"?

Iska 15-06-2014 16:43 2364289

Цитата:

Цитата Crush45
HotFixID='File 1' - это просто для примера? »

Нет.

Цитата:

Цитата Crush45
что означает в данном случае "File 1"? »

Значение одного из ключей.

Читаете: Win32_QuickFixEngineering class (Windows). Видите, что ключами для экземпляров объектов данного класса являются:
Цитата:

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» — не ко мне.


Время: 18:03.

Время: 18:03.
© OSzone.net 2001-