Проверка установки обновлений Windows

у меня есть сценарий powershell, используемый отделом ИТ-поддержки для удаленной установки программного обеспечения на рабочие станции. Сценарий поддерживает установку нескольких продуктов (один за другим) и поэтому может занять много времени.

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

у нас есть объект групповой политики обновления Windows, ориентированные на все наши рабочие станции настроены для установки обновлений в 9 вечера каждую среду. Если рабочая станция пропустит запланированную дату установки, обновления будут установлены через 60 минут после следующего включения компьютера.

в то время как техник устанавливал программное обеспечение на удаленной рабочей станции, обновление Windows перепланировать ногами В. Поэтому его установка и обновления Windows теперь оба установки в то же время. Это вызвало продукт, который он устанавливал (SQL Server Management Studio) для сбоя.

Я хотел бы изменить свой сценарий, чтобы проверить, устанавливаются ли обновления Windows в настоящее время. Если да, то предупредите техника и прервите сценарий. Если нет, то остановить и отключить службу обновления окон (wuauserv), это предотвратит возможность его ногами в то время как сценарий используется, а затем запустить и повторно включить службу, когда сценарий достигает конца.

Я не могу найти надежный способ проверки наличия обновления Windows в настоящее время устанавливается.

любые предложения приветствуются; я рад использовать объект, инструмент командной строки, WMI, читать реестр и т. д...

обновление 1. 06/04/13: то, что я надеялся на какой-то способ запроса состояния службы Центра Обновления Windows. Если обновления в настоящее время устанавливаются, я бы предпочел уважать тот факт, что обновления устанавливаются, и посоветовать технику вернуться позже. В настоящее время я провожу некоторые тесты, чтобы определите эффект остановки службы wuauserv в следующих сценариях:

  1. остановите службу перед установкой обновлений.
  2. остановите службу во время установки обновлений.

обновление 2. 06/04/13:
У меня была виртуальная машина Windows 7, которая не была включена в течение нескольких дней, и поэтому я смог имитировать ситуацию, с которой столкнулся техник на днях. Я смог использовать
снимки мои преимущество провести ряд различных тестов.

Я должен отметить, что я редактор групповой политики отвечает за обновление окна настроек, уменьшение перепланировать время от 60 мин. до 10 мин. После станции включения (чтобы тестирование немного легче).

тест 1)остановил службу wuauserv перед установкой обновлений.

обновления должны были быть установлены в 12: 40.

Я останавливаю wuauserv удаленно с помощью powershell. Я следил за WindowsUpdate.лог и появилось следующее:

2013-04-06      12:36:00:287     984    e68     Service *********
2013-04-06      12:36:00:287     984    e68     Service **  END  **  Service: Service exit [Exit code = 0x240001]
2013-04-06      12:36:00:287     984    e68     Service *************

я подождал до 12.40 на случай, если служба сможет запуститься снова каким-то волшебством. Это не так.

я запустил службу и следующее было записано в WindowsUpdate.журнал, подтверждающий повторный запуск службы.

2013-04-06    12:42:07:571     984    e70    Misc    ===========  Logging initialized (build: 7.6.7600.256, tz: +0100)  ===========
2013-04-06    12:42:07:571     984    e70    Misc      = Process: C:Windowssystem32svchost.exe
2013-04-06    12:42:07:571     984    e70    Misc      = Module: c:windowssystem32wuaueng.dll
2013-04-06    12:42:07:571     984    e70    Service    *************
2013-04-06    12:42:07:571     984    e70    Service    ** START **  Service: Service startup
2013-04-06    12:42:07:571     984    e70    Service    *********

журнал также подтвердил, что 10-минутный перенос снова применился:

Success    Content Install    Installation Ready: The following updates are downloaded and ready for installation. This computer is currently scheduled to install these updates on 06 April 2013 at 12:52

тест 2) остановил службу wuauserv во время установка обновления

Это выдержка из WindowsUpdate.вход непосредственно перед остановкой сервиса:

2013-04-06      13:25:00:372    1004    4dc     DnldMgr Preparing update for install, updateId = {F13298D7-7EC1-4D33-9A57-A367F54BA4DA}.106.
2013-04-06      13:25:00:372    3472    790     Handler :::::::::::::
2013-04-06      13:25:00:372    3472    790     Handler :: START ::  Handler: CBS Install
2013-04-06      13:25:00:372    3472    790     Handler :::::::::
2013-04-06      13:25:00:372    3472    790     Handler Starting install of CBS update F13298D7-7EC1-4D33-9A57-A367F54BA4DA
2013-04-06      13:25:00:419    3472    790     Handler CBS package identity: Package_for_KB2698365~31bf3856ad364e35~amd64~~6.1.1.2
2013-04-06      13:25:00:434    3472    790     Handler Installing self-contained with source=C:WindowsSoftwareDistributionDownloadfff2597df465a2957121c20dbd4bcecwindows6.1-kb2698365-x64.cab, workingdir=C:WindowsSoftwareDistributionDownloadfff2597df465a2957121c20dbd4bcecinst

это то, что было записано, когда я остановил службу:

2013-04-06      13:25:19:957    3472    3e4     Handler CUHCbsHandler::Cancel called with fReleaseThreadNow=0
2013-04-06      13:25:19:957    1004    ed0     AU      ###########  AU: Uninitializing Automatic Updates  ###########
2013-04-06      13:25:19:973    3472    3e4     Handler CUHCbsHandler::Cancel called with fReleaseThreadNow=1
2013-04-06      13:25:19:973    3472    790     Handler WARNING: CBS handler has been told to exit immediately.
2013-04-06      13:25:19:973    3472    790     Handler FATAL: Completed install of CBS update with type=2, requiresReboot=0, installerError=0, hr=0x80242008
2013-04-06      13:25:19:973    3472    790     Handler :::::::::
2013-04-06      13:25:19:973    3472    790     Handler ::  END  ::  Handler: CBS Install
2013-04-06      13:25:19:973    3472    790     Handler :::::::::::::
2013-04-06      13:25:19:988    1004    4dc     Agent     * WARNING: Exit code = 0x8024000B
2013-04-06      13:25:19:988    1004    4dc     Agent   *********
2013-04-06      13:25:19:988    1004    4dc     Agent   **  END  **  Agent: Installing updates [CallerId = AutomaticUpdates]
2013-04-06      13:25:19:988    1004    4dc     Agent   *************
2013-04-06      13:25:19:988    1004    4dc     Agent   WARNING: WU client failed installing updates with error 0x8024000b
2013-04-06      13:25:20:004    1004    ed0     Report  REPORT EVENT: {72199C19-359E-4D78-A075-4EAA44C368D9}    2013-04-06 13:25:19:973+0100  1186     101     {D5FD720E-0F2C-4363-AA87-6AD4A6D11B0E}  106     8024000b        AutomaticUpdates        Success Content Install User cancelled the installation.
2013-04-06      13:25:20:035    1004    ed0     Report  CWERReporter::HandleEvents - WER report upload completed with status 0x8
2013-04-06      13:25:20:035    1004    ed0     Report  WER Report sent: 7.6.7600.256 0x8024000b D5FD720E-0F2C-4363-AA87-6AD4A6D11B0E Install 101 Managed
2013-04-06      13:25:20:035    1004    ed0     Report  CWERReporter finishing event handling. (00000000)
2013-04-06      13:25:20:160    1004    ed0     Service *********
2013-04-06      13:25:20:160    1004    ed0     Service **  END  **  Service: Service exit [Exit code = 0x240001]
2013-04-06      13:25:20:160    1004    ed0     Service *************

как вы можете видеть, он документирует тот факт, что обновление, которое в настоящее время устанавливается был отменен.

Я просто надеюсь, что установка, которая проходила, была отменена изящным образом? Но я действительно не знаю ответа на этот вопрос... Как большинство обновлений Windiws используют MSIs, я надеюсь, что они используют свою способность отката файлов и изменений реестра и, таким образом, оставить рабочую станцию в стабильном состоянии.

15
задан Fitzroy
27.04.2023 12:01 Количество просмотров материала 2416
Распечатать страницу

3 ответа

чистая остановка wuauserv

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

когда ваш скрипт завершает

чистый старт wuauserv

1
отвечен cybernard 2023-04-28 19:49

Я сейчас не нахожусь на доменной машине, чтобы проверить имена, но способ, которым я обработал это:

искать запущенные процессы:

  1. msiexec.exe
  2. настройка.exe
  3. SCCM процесс-я забыл точное имя, убить его.
  4. SMS процесс-имя забыли тоже, убить его

Я проверяю первые два запуска (и еще один, который является CompanyNameSetup.exe), чтобы увидеть, если есть текущие установки. Если нет, то убейте Процессы SCCM и SMS поэтому никакие новые установки нельзя нажать.

выполните установку, а затем перезагрузите компьютер или перезапустите процессы / службы SCCM и SMS.

после комментариев ниже: я думаю, что это будет маршрут в псевдо:

while (msiexec.exe isRunning OR Setup.EXE isRunning)
{wait for completion}
net stop wuauserv  #Prevent installs
taskkill /im Wuauclt.exe /f  #Kill an empty Wuauclt.exe

затем вы можете вызвать ваши скрипты, после того, как ваши установки сделаны, все, что вам нужно сделать, это вызвать

net start wuauserv  #Start WSUS service
1
отвечен Austin T French 2023-04-28 22:06

Я бы не рекомендовал убивать этих процессов в середине установки, как вы и AthomSfere обсудят. Однако, видя, как два основных установить имена в Windows, чтобы искать msiexec.exe и setup.exe вы можете искать их в своем сценарии powershell, и если эти процессы запущены, создайте цикл, в котором скрипт спит, пока оба они не будут закрыты. Что-то вроде (псевдокод):

while($(get-process -like msiexec.exe).count -gt 1 -or $(get-process -like setup.exe).count -gt 1){
    sleep 300
}

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

идеально, если бы у вас была достаточно большая инфраструктура, чтобы использовать что-то вроде sccm для развертывания программного обеспечения и обновления windows, то это то, что вы хотели бы, и что в конечном итоге предотвратить эти конфликты (по крайней мере, из моего опыта программного обеспечения и обновления, установленные из sccm, не конфликтуют, они устанавливаются последовательно, а не одновременно).

1
отвечен MDMoore313 2023-04-29 00:23

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

automatic-update
powershell
windows-update
wsus
Вверх