Мониторинг обновлений windows powershell

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Используем PowerShell для автоматизации установки обновлений

Используем PowerShell для автоматизации установки обновлений

Установка большого количества обновлений Windows Update обычно относится к тем рутинным операциям, которые каждый системный администратор хотел бы как можно сильнее автоматизировать. Действительно, данная задача занимает довольно много времени и требует время от времени отвлекаться, чтобы перейти от одного этапа к другому. Отчасти выручить в этой ситуации может создание собственного дистрибутива, уже включающего все необходимые обновления, но воспользоваться им удается не всегда. Иногда надо просто быстро обновить до актуального состояния какую-либо систему, тогда на помощь нам придет PowerShell.

Кроме того, в режиме аудита Windows 8 использовать Центр обновления Windows нельзя и установить обновления привычным образом не получится.

В этих, а также во многих других, случаях имеет смысл воспользоваться специальным модулем PowerShell для работы с Windows Update. Скачать его можно со страницы разработчика на Technet: Windows Update PowerShell Module. Мы настоятельно рекомендуем скачивать данный модуль именно оттуда.

Данный модуль работает в системах, начиная с Windows Vista и Server 2008 и требует PowerShell 2.0, хотя оптимально будет использование PowerShell 3.0 и выше.

Архив с модулем содержит папку PSWindowsUpdate, которую следует разместить в одном из двух возможных расположений:

Если вы хотите использовать данный модуль на постоянной основе, то имеет смысл разместить его в системной папке, в остальных случаях лучше использовать для этого директорию в профиле пользователя. Учтите, в папке Мои документы отсутствуют вложенные директории WindowsPowerShell и Modules, поэтому их следует создать самостоятельно.

Что дальше? В принципе уже сейчас можно воспользоваться одним из пакетных скриптов для данного модуля, доступных в сети. Но лучше сначала поработать с ним самостоятельно, после чего создать свой собственный пакетный файл.

Откроем консоль PowerShell от имени Администратора. Прежде всего выясним установленную политику командой:

По умолчанию обычно установлена политика Restricted, которая запрещает выполнение скриптов даже администратору. Поэтому изменим ее на RemoteSigned, позволяющую запускать локальные скрипты, также, в целях безопасности, рекомендуем изменять политику только для текущего сеанса. Выполним команду:

Ключ -Scope позволяет задавать область применения политики, в данном случае это текущий процесс. Теперь можно выполнить импорт модуля командой:

В Windows 7 и иных системах, использующих PowerShell 2.0 вы можете столкнуться со следующей ошибкой: Имя «Unblock-File» не распознано как имя командлета. Она возникает из-за использования в одном из скриптов функции появившейся в PowerShell 3.0.

Однако ее несложно исправить. В папке с модулем откройте файл PSWindowsUpdate.psm1 и удалите в первой строке последовательность:

Сохраните исправленный файл и повторите импорт модуля. Теперь можно приступить к работе с ним.

Читайте также:  Белые иконки для рабочего стола windows 10

Прежде всего получим список доступных обновлений:

А вот и первый сюрприз, в списке обновлений присутствуют языковые модули, Skype и обновление для перехода на Windows 10. Все это приехало бы на ваш компьютер, воспользуйся вы одним из популярных скриптов для этого модуля, доступных в сети.

К счастью модуль обладает широкими возможностями. Мы можем исключить пакеты из списка по их категории, ключ -NotCategory, названию, ключ -NotTitle, или номеру обновления, ключ -NotKBArticleID. Используем каждый из них, в нашем случае уберем категорию языковых пакетов, Skype и обновление до Windows 10:

Вот, уже гораздо лучше.

Теперь можно установить обновления командой:

Ключи -AcceptAll и -IgnoreReboot включают одобрение всех пакетов и подавляют требование перезагрузки после установки некоторых обновлений.

Убедившись, что все работает как надо, можно создать собственный пакетный файл, откроем блокнот и в одну строку запишем:

Данная команда запускает PowerShell, устанавливает политику RemoteSigned, импортирует модуль, затем передает ему вышеуказанную команду. В общем делает все тоже самое, что мы только-что выполнили вручную. Сохраните данный файл как PSWindowsUpdate.cmd и теперь все что вам потребуется, это разместить модуль в нужном расположении и запустить данный пакетный файл с правами администратора.

Удобно? Да. Правда учтите, что некоторые обновления требуют обязательной установки предыдущих, поэтому, если вы давно не обновлялись, данный скрипт придется запускать несколько раз. Но это все равно проще, чем проделывать все эти операции вручную, кликнул на скрипт и занимайся своими делами, время от времени поглядывая на экран.

В Windows 8 языковые пакеты через WindowsUpdate не распространяются, поэтому команду можно немного упростить.

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

Для установки отдельного пакета используйте команду (номер пакета использован исключительно для примера):

Если надо установить несколько пакетов, то разделите их номера запятыми и добавьте ключ -IgnoreReboot, например:

Мы не ставили своей целью дать в данной статье полный обзор этого модуля, сфокусировавшись на решении конкретной задачи. Поэтому, если вас заинтересовали иные возможности данного модуля, то обратитесь к встроенной справке. Для этого откройте в блокноте файл интересующей функции, например, Get-WUInstall.ps1, каждый из которых автор снабдил подробным описанием.

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

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Как проверить журнал центра обновления Windows с помощью Windows PowerShell

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

Читайте также:  Восстановить файлы с флешки линукс

Пользователи могут проверить историю обновлений, например с помощью пользовательского интерфейса параметров Windows, но в данной статье рассмотрен способ как проверить журнал центра обновлений Windows с помощью одного из средств автоматизации задач и управления конфигурацией, таких как консоль Windows PowerShell.

Чтобы проверить журнал центра обновления Windows, запустите консоль Windows PowerShell от имени администратора и выполните команду:

Можно также ввести следующую команду, чтобы вывести список исправлений и соответствующее описание:

wmic qfe get /format:csv | ConvertFrom-Csv

Обратите внимание, что показанные выше две команды отображают данные только об обновлениях операционной системы и ее компонентов. Получить информацию об обновлениях для других продуктов MS (Защитник Windows, Office и т.п) таким образом не получится.

Чтобы вывести список всех установленных обновлений, запустите консоль Windows PowerShell от имени администратора, скопируйте и вставьте код представленный ниже и нажмите клавишу Enter ↵

function Convert-WuaResultCodeToName
<
param( [Parameter(Mandatory=$true)]
[int] $ResultCode
)
$Result = $ResultCode
switch($ResultCode)
<
2
<
$Result = «Succeeded»
>
3
<
$Result = «Succeeded With Errors»
>
4
<
$Result = «Failed»
>
>
return $Result
>
function Get-WuaHistory
<
# Get a WUA Session
$session = (New-Object -ComObject \’Microsoft.Update.Session\’)
# Query the latest 1000 History starting with the first recordp
$history = $session.QueryHistory(«»,0,50) | ForEach-Object <
$Result = Convert-WuaResultCodeToName -ResultCode $_.ResultCode
# Make the properties hidden in com properties visible.
$_ | Add-Member -MemberType NoteProperty -Value $Result -Name Result
$Product = $_.Categories | Where-Object <$_.Type -eq \'Product\'>| Select-Object -First 1 -ExpandProperty Name
$_ | Add-Member -MemberType NoteProperty -Value $_.UpdateIdentity.UpdateId -Name UpdateId
$_ | Add-Member -MemberType NoteProperty -Value $_.UpdateIdentity.RevisionNumber -Name RevisionNumber
$_ | Add-Member -MemberType NoteProperty -Value $Product -Name Product -PassThru
Write-Output $_
>
#Remove null records and only return the fields we want
$history |
Where-Object |
Select-Object Result, Date, Title, SupportUrl, Product, UpdateId, RevisionNumber
>

Затем выполните следующую команду, чтобы получить события журнала обновлений с датой результата, заголовком и идентификатором обновления:

Также, при необходимости, Вы можете просмотреть лог установленных обновлений, для этого выполните следующую команду:

Как установить обновление Windows 10 с помощью PowerShell

Обновления Windows 10 происходят автоматически или вручную через центр обновления Windows. Но знали вы, что можно установить обновления Windows 10 через PowerShell? Давайте разберем как это сделать.

Шаг 1. Запустите PowerShell от имени администратора.

Шаг 2. В окно PowerShell введите следующую команду:

  • Install-Module PSWindowsUpdate — Установка модуля.
  • Нажмите A (Да для всех).

После установки модуля вам больше не нужно повторять Шаг 2, чтобы установить или удалить обновления Windows 10.

Шаг 3. Теперь проверим наличие имеющихся обновлений Windows 10 и, если они имеются, то установим их.

  • Get-WindowsUpdate — Проверка наличие обновления.
  • Install-WindowsUpdate — Установка обновления.
  • Нажмите A для подтверждения установки.

Примечание: Модуль PSWindowsUpdate может использовать дополнительные команды. Введите Get-Command –Module PSWindowsUpdate , чтобы вызвать HELP.

Разберем некоторые важные:

  1. Download-WindowsUpdate или Get-WindowsUpdate –Download — получить список обновлений и загрузить их.
  2. Get-WUInstall или Install-WindowsUpdate — установить обновления.
  3. Uninstall-WindowsUpdate или Remove-WindowsUpdate — удалить обновление.
  4. Get-WindowsUpdate или Get-WUList — отображает список обновлений, которые имеются на серверах Microsoft.
  5. Get-WUHistory — список истории обновлений.
  6. Get-WURebootStatus — проверить требуется ли перезагрузка ПК для применения установки обновления.
  7. Remove-WindowsUpdate — позволяет удалить обновление по идентификатору КБ

Управление Windows Update с помощью PowerShell

Модуль PSWindowsUpdate, автором которого является Michal Gajda, позволяет управлять параметрами обновления ОС Windows на любом компьютере под управлением PowerShell 2.0 или выше.

PSWindowsUpdate даёт возможность администраторам предприятий проверять и устанавливать обновления на удаленных рабочих станциях и серверах. Он особенно удобен в использовании для установки обновлений на Windows Server Core, у которых нет GUI, а также во время настройки Windows в режиме аудита.

После загрузки, извлекаем содержимое файла в папку C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ .

Если на данном этапе появляется предупреждение User Access Control, выбираем «Продолжить».

Для извлечения файлов, необходимо запустить консоль PowerShell с правами администратора и выполнить команду, которая разрешит выполнять системные сценарии:

Данная команда дает возможность выполнять нам неподписанные скрипты PowerShell, но при этом несколько снижает уровень безопасности (т.к. в случае ошибки администратора может быть запущен скрипт, способный навредить системе).

В случае, если на данном этапе возникнет ошибка:

…необходимо зайти в gpedit.msc (Нажать сочетание клавиш Windows + R, откроется окно выполнить, ввести gpedit.msc и нажать Enter), перейти в раздел Конфигурация компьютера > Административные шаблоны > Компоненты Windows > Windows PowerShell и переключить состояние политики «Включить выполнение сценариев» в режим «Включено».

После изменения настроек политики, необходимо перезапустить консоль PowerShell, повторно выполнить команду, разрешающую сценарии, и проверить, повторится ли ошибка. Если выполнение завершится без ошибок, то можно проверить состояние политики с помощью команды:

Теперь, если всё прошло успешно, вывод PowerShell будет примерно следующим:

Затем, импортируем модуль PSWindowsUpdate и запрашиваем список доступных команд:

Одним из наиболее значимых командлетов является Get-WUInstall , который предназначен для загрузки и установки обновлений. Для просмотра обновлений, доступных для установки из MicrosoftUpdate, выполним команду

Точно такой же результат можно получить с помощью команды Get-WUList –MicrosoftUpdate :

Для установки с подтверждением вручную для каждого обновления можно использовать команду Get-WUInstall –MicrosoftUpdate :


Прочие параметры PSWindowsUpdate

Рассмотрим некоторые параметры, способные упростить жизнь системному администратору:

  1. Установка всех доступных обновлений из MicrosoftUpdate с последующей перезагрузкой:
  2. Запрет установки отдельного обновления из MicrosoftUpdate по названию и номеру KB:

и отмена запрета в случае необходимости:

Скрипт совместим со всеми операционными системами, начиная с Windows Vista и заканчивая Windows 10. Работоспособность сценария пока не проверялась на Windows Server 2016. Операционная система Windows Server 2003 не поддерживается.

При необходимости, для задания параметру ExecutionPolicy значения Restricted (настройки по умолчанию), можно воспользоваться следующей командой:

Оцените статью