# encoding: utf-8 # api: powershell # title: Show-WindowsUpdates # description: ############################################################################################# # version: 0.1 # type: function # author: Rob Sewell # license: CC0 # function: Show-WindowsUpdatesLocal # x-poshcode-id: 4484 # x-archived: 2016-05-30T19:39:40 # x-published: 2016-09-23T22:22:00 # # # # NAME: Show-WindowsUpdatesLocal.ps1 # AUTHOR: Rob Sewell http://sqldbawithabeard.com # DATE:22/09/2013 # # # COMMENTS: Load function to show all windows updates locally # # # USAGE: Show-WindowsUpdatesLocal # Show-WindowsUpdatesLocal| Select Date, HotfixID, Result|Format-Table -AutoSize # Show-WindowsUpdatesLocal|Where-Object {$_.Result -eq ‘Failed’} |Select Date, HotfixID, Result,Title|Format-Table -AutoSize # Show-WindowsUpdatesLocal|Format-Table -AutoSize|Out-File c:\temp\updates.txt # Show-WindowsUpdatesLocal|Export-Csv c:\temp\updates.csv # ############################################################################################# # # NAME: Show-WindowsUpdatesLocal.ps1 # AUTHOR: Rob Sewell http://sqldbawithabeard.com # DATE:22/09/2013 # # COMMENTS: Load function to show all windows updates locally # # USAGE: Show-WindowsUpdatesLocal # Show-WindowsUpdatesLocal| Select Date, HotfixID, Result|Format-Table -AutoSize # Show-WindowsUpdatesLocal|Where-Object {$_.Result -eq 'Failed'} |Select Date, HotfixID, Result,Title|Format-Table -AutoSize # Show-WindowsUpdatesLocal|Format-Table -AutoSize|Out-File c:\temp\updates.txt # Show-WindowsUpdatesLocal|Export-Csv c:\temp\updates.csv # Function Show-WindowsUpdatesLocal { $Searcher = New-Object -ComObject Microsoft.Update.Searcher $History = $Searcher.GetTotalHistoryCount() $Updates = $Searcher.QueryHistory(1,$History) # Define a new array to gather output $OutputCollection= @() Foreach ($update in $Updates) { $Result = $null Switch ($update.ResultCode) { 0 { $Result = 'NotStarted'} 1 { $Result = 'InProgress' } 2 { $Result = 'Succeeded' } 3 { $Result = 'SucceededWithErrors' } 4 { $Result = 'Failed' } 5 { $Result = 'Aborted' } default { $Result = $_ } } $string = $update.title $Regex = “KB\d*” $KB = $string | Select-String -Pattern $regex | Select-Object { $_.Matches } $output = New-Object -TypeName PSobject $output | add-member NoteProperty “Date” -value $Update.Date $output | add-member NoteProperty “HotFixID” -value $KB.‘ $_.Matches ‘.Value $output | Add-Member NoteProperty "Result" -Value $Result $output | add-member NoteProperty “Title” -value $string $output | add-member NoteProperty “Description” -value $update.Description $OutputCollection += $output } $OutputCollection }