diff --git a/functions/public/Invoke-WPFUpdateMGMGT.ps1 b/functions/public/Invoke-WPFUpdateMGMGT.ps1 index bb7e723351..d6cec270f7 100644 --- a/functions/public/Invoke-WPFUpdateMGMGT.ps1 +++ b/functions/public/Invoke-WPFUpdateMGMGT.ps1 @@ -4,10 +4,42 @@ function Invoke-WPFUpdateMGMT { [switch]$All ) - if ($Selected) { - write-host "Installing selected updates" - } elseif ($All) { - Write-Host "Installing all available updates" + if ($All) { + Write-Host "Installing all available updates ..." + Invoke-WPFRunspace -ArgumentList $sync["WPFUpdateVerbose"].IsChecked -DebugPreference $DebugPreference -ScriptBlock { + param ($WPFUpdateVerbose) + if ($WPFUpdateVerbose) { + Install-WindowsUpdate -Verbose -Confirm:$false -IgnoreReboot:$true -IgnoreRebootRequired:$true + } else { + Install-WindowsUpdate -Confirm:$false -IgnoreReboot:$true -IgnoreRebootRequired:$true + } + Write-Host "All Update Processes Completed" + } + } elseif (($Selected) -and ($sync["WPFUpdatesList"].SelectedItems.Count -gt 0)) { + write-host "Installing selected updates..." + $selectedUpdates = $sync["WPFUpdatesList"].SelectedItems | ForEach-Object { + [PSCustomObject]@{ + ComputerName = $_.ComputerName + Title = $_.LongTitle + KB = $_.KB + Size = $_.Size + } + } + Invoke-WPFRunspace -ParameterList @(("selectedUpdates", $selectedUpdates), ("WPFUpdateVerbose", $sync["WPFUpdateVerbose"].IsChecked)) -DebugPreference $DebugPreference -ScriptBlock { + param ($selectedUpdates, $WPFUpdateVerbose) + foreach ($update in $selectedUpdates) { + Write-Host "Installing update $($update.Title) on $($update.ComputerName)" + if ($WPFUpdateVerbose) { + Get-WindowsUpdate -ComputerName $update.ComputerName -Title $update.Title -Install -Confirm:$false -Verbose -IgnoreReboot:$true -IgnoreRebootRequired:$true + } else { + Get-WindowsUpdate -ComputerName $update.ComputerName -Title $update.Title -Install -Confirm:$false -IgnoreReboot:$true -IgnoreRebootRequired:$true + } + } + Write-Host "Selected Update Processes Completed" + } + } else { + Write-Host "No updates selected" + return } } diff --git a/functions/public/Invoke-WPFUpdatesScan.ps1 b/functions/public/Invoke-WPFUpdatesScan.ps1 index deab6b1a8b..4805b022f3 100644 --- a/functions/public/Invoke-WPFUpdatesScan.ps1 +++ b/functions/public/Invoke-WPFUpdatesScan.ps1 @@ -34,6 +34,7 @@ function Invoke-WPFUpdatesScan { $sync.form.Dispatcher.Invoke([action] { foreach ($update in $updates) { $item = New-Object PSObject -Property @{ + LongTitle = $update.Title ComputerName = $update.ComputerName KB = $update.KB Size = $update.Size diff --git a/xaml/inputXML.xaml b/xaml/inputXML.xaml index f4ab03cb89..18e60fd32b 100644 --- a/xaml/inputXML.xaml +++ b/xaml/inputXML.xaml @@ -1387,6 +1387,10 @@ IsReadOnly="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> + + + +