sergey vasin

The IT blog

Использование модуля PowerShell для запуска Windows Update – Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о бесплатном модуле Windows PowerShell для запуска Windows Update.

Microsoft Scripting Guy, Ed Wilson на связи. Несколько разочаровывающим является тот факт, что Windows 8 и Windows Server 2012 не включают в себя командлеты для работы с Windows Update из PowerShell. Пару лет назад я написал несколько скриптов и функций, использующих Windows Update API, но я не хочу возиться с набором скриптов. К счастью, этого и не требуется. Michal Gajda написал Windows Update PowerShell Module, доступный из Scripting Guys Script Repository. Все что нужно сделать – это скачать его, разблокировать и скопировать в централизованное хранилище

Скачиваем и разблокируем модуль

Windows Update PowerShell Module состоит из нескольких скриптов. После его скачивания, файл PSWindowsUpdate.zip заблокирован. Сейчас существуют командлеты Windows PowerShell для разблокировка файлов, но проще использовать графический интерфейс Windows Explorer.

01

Теперь, когда я разблокировал архив, я разархивирую его содержимое и скопирую в общую папку на сервере.

Copy-Item -destination \\dc1\Share\PSWindowsUpdate -Recurse -Path C:\fso\PSWindowsUpdate -Force

Импортируем модуль

Теперь мне нудно импортировать модуль. Но эта команда хоть и задана правильно, сложно назвать ее интуитивно-понятной. Вместо указания имени модуля, я указал полный путь к ней. Я запустил консоль PowerShell с правами администратора, потому что команде требуются права для обновления компьютера. Так как модули идентифицируются по имени папки, которое соответствует имени модуля, я просто указал путь к общей папке, содержащей модуль. Весьма радует тот факт, что я могу нажать Tab и мне не придется набирать путь полностью.

ipmo \\dc1\Share\PSWindowsUpdate

Я импортировал модуль, и теперь могу воспользоваться командлетом Get-Command, чтобы посмотреть список доступных мне команд.

PS C:\> gcm -Module pswindows*

CommandType Name ModuleName

———— —- ———-

Function Add-WUOfflineSync PSWindowsUpdate

Function Get-WUHistory PSWindowsUpdate

Function Get-WUInstall PSWindowsUpdate

Function Get-WUInstallerStatus PSWindowsUpdate

Function Get-WUList PSWindowsUpdate

Function Get-WURebootStatus PSWindowsUpdate

Function Get-WUServiceManager PSWindowsUpdate

Function Get-WUUninstall PSWindowsUpdate

Function Remove-WUOfflineSync PSWindowsUpdate

Function Test-ElevatedShell PSWindowsUpdate

Команда (на самом деле расширенная функция) которая мне нужна, называется Get-WUInstall. Эта функция обладает достаточно серьезной функциональностью и, кроме того, содержит встроенную справку. Я рекомендую потратить некоторое время для ознакомления с ее параметрами. По умолчанию, она подключается к Windows Update, выводит список доступных обновлений и предоставляет возможность выбрать необходимые. (Кроме того, она содержит параметр acceptall, при указании которого устанавливаются все обновления). Я запустил эту функцию на своем компьютере и обнаружил видеодрайвер, о котором я раньше не знал.

PS C:\> Get-WUInstall

Confirm

Are you sure you want to perform this action?

Performing operation «nVidia — Graphics Adapter WDDM1.1, Graphics Adapter WDDM1.2,

Other hardware — NVIDIA Quadro 2000M[226 MB]?» on Target «EDLT».

[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help

(default is «Y»):y

X Status KB Size Title

— —— — —- ——

2 Accepted 226 MB nVidia — Graphics Adapter WDDM1.1, Graphics Adapter…

3 Downloaded 226 MB nVidia — Graphics Adapter WDDM1.1, Graphics Adapter…

4 Installed 226 MB nVidia — Graphics Adapter WDDM1.1, Graphics Adapter…

Для определения того, нужно ли мне перезагрузить компьютер после установки обновлений, я могу воспользоваться командлетом Get-WURebootStatus.

PS C:\> Get-WURebootStatus

Reboot is not Required.

Если я хочу перезагрузить компьютер с Windows 8 или Windows Server 2012, я могу ввести команду Restart-Computer. Но даже на Windows 7 (или Windows XP) с установленными Windows PowerShell 2.0 и функцией Get-WUInstall, я могу перезапустить компьютер, используя встроенные параметры команды. Например, я могу указать такие опции, как AutoReboot и IgnoreReboot.

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

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/08/use-a-powershell-module-to-run-windows-update.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Ноябрь 10, 2012 в 13:48

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s