Private/ComputerStats/_GetInstalledUpdates.ps1
function _GetInstalledUpdates { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] $Identity ) begin { $ScriptBlock = { $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' } } } } } } process { if (!(Test-Connection -ComputerName $Identity -Count 1 -Quiet)) { $MessageSplat = @{ MessageText = "Unable to contact $Identity. Please verify its network connectivity and try again." MessageIcon = 'Hand' ButtonType = 'OK' MessageTitle = 'Error' } _ShowMessageBox @MessageSplat Break } if ($Identity -eq $env:COMPUTERNAME) { $Output = Invoke-Command -ScriptBlock $ScriptBlock } else { try { # TODO use session splat or created session from _NewSession $Session = New-PSSession @SessionSplat -ComputerName $Identity -ErrorAction Stop } catch { $MessageSplat = @{ MessageText = "Unable to create session on $Identity. Please verify your access and try again." MessageIcon = 'Hand' ButtonType = 'OK' MessageTitle = 'Error' } _ShowMessageBox @MessageSplat Break } $Output = Invoke-Command -Session $Session -ScriptBlock $ScriptBlock } } end { return $Output } } |