AutoUpdate — 2

Продолжаю этот пост.

Просмотр истории обновлений на компьютере

$Session = New-Object -ComObject "Microsoft.Update.Session" $Searcher = $Session.CreateUpdateSearcher() $historyCount = $Searcher.GetTotalHistoryCount() $Searcher.QueryHistory(0, $historyCount) | Select-Object Title, Description, Date, @{name="Operation"; expression={switch($_.operation){ 1 {"Installation"}; 2 {"Uninstallation"}; 3 {"Other"} }}}

Рекомендую сравнить с оригиналом🙂

Получение списка обновлений с Windows Update

Сразу скажу, на самом деле весь этот здоровенный (особенно в оригинале) скрипт можно уложить в одну не особенно страшную строчку:

(New-Object -com microsoft.update.session).createUpdateSearcher().search("Type='Software'").Updates

Всё остальное это форматирование и выборка нужных свойств с помощью Select-Object. Полный файл GetAvalableUpdates.ps1 ниже:

$Session = New-Object -ComObject "Microsoft.Update.Session" $Searcher = $Session.CreateUpdateSearcher() $Result = $Searcher.Search("Type='Software'").Updates $Result | Select-Object Title, AutoSelectOnWebSites, BundledUpdates, CanRequireSource, Categories, Deadline, DeltaCompressedContentAvalable, DeltaCompressedContentPreffered, Description, EULAAccepted, EULAText, HandlerID, @{name="RevisionNumber"; expression={$_.identity.revisionNumber}}, @{n="UpdateID"; e={$_.identity.UpdateID}}, @{n="CanRequestUserInput";e={$_.installationBehavior.CanRequestUserInput}}, @{n="Impact";e={switch($_.InstallationBehavior.Impact){ 0{"Typical"};1{"Negligible"};2{"High"};default{"Unknown"}}}}, @{n="Reboot";e={switch($_.InstallationBehavior.RebootBehavior){ 0{"Not required"};1{"Required"};2{"Might be required"};default{"Unknown"}}}}, @{n="RequiresNetworkConnectivity"; e={$_.InstallationBehavior.RequiresNetworkConnectivity}}, IsBeta, IsHidden, IsInstalled, IsMandatory, IsUninstallable, Languages, LastDeploymentChangeTime, MSRCSeverity, UninstallationNotes, UninstallationSteps, @{n="MaxDownloadSize";e={"$([int]($_.maxDownloadSize/1MB)) MB"}}, @{n="MinDownloadSize";e={"$([int]($_.maxDownloadSize/1MB)) MB"}}, @{n="Type";e={switch($_.type){1{"Software"};2{"Driver"};default {"Unknown"}}}}, KBArticleIDs

А использовать его можно например так:

.\GetAvalableUpdates.ps1 | Where {-Not $_.IsInstalled} | Format-Table Title, Categories -AutoSize

В PowerShell нам уже не нужен отдельный скрипт для того чтобы посмотреть установлено ли какое то конкретное обновление.

.\GetAvalableUpdates.ps1 | Where {$_.Title -like "*XML Core Services*"} | Format-List Title, IsInstalled, Description, KBArticleIDs .\GetAvalableUpdates.ps1 | Where {$_.KBArticleIDs -contains "936181"} | Format-List Title, IsInstalled, Description, KBArticleIDs

Не забудьте разрешить выполнение скриптов если еще не разрешили:

Set-ExecutionPolicy RemoteSigned

Эта команда разрешит запуск локальных скриптов. Файлы полученные с помощью Internet Explorer, Outlook, или из архивов Zip надо будет сначала разблокировать.

Опубликовано в PowerShell. 1 Comment »

Один ответ to “AutoUpdate — 2”

  1. AutoUpdate - 1 « PowerShell и другие скрипты Says:

    […] тут Posted by xaegr Filed in […]


Обсуждение закрыто.

%d такие блоггеры, как: