$RemoteComputers = get-content "C:\test\dpservers.txt" ForEach ($Computer in $RemoteComputers) { Try { Invoke-Command -Computername $Computer -ScriptBlock { $head=@” <style> @charset “UTF-8”; table { font-family:”Trebuchet MS”, Arial, Helvetica, sans-serif; border-collapse:collapse; } td { font-size:1em; border:1px solid #98bf21; padding:5px 5px 5px 5px; } th { font-size:1.1em; text-align:center; padding-top:5px; padding-bottom:5px; padding-right:7px; padding-left:7px; background-color:#A7C942; color:#ffffff; } name tr { color:#F00000; background-color:#EAF2D3; } </style> “@ $Session = New-Object -ComObject “Microsoft.Update.Session” $Searcher = $Session.CreateUpdateSearcher() $historyCount = $Searcher.GetTotalHistoryCount() $htmlbody = $Searcher.QueryHistory(0, $historyCount) |Where{$_.Date -gt (Get-Date).AddDays(-20)} | Where{$_.ClientApplicationID -eq ‘CcmExec’} | Select-Object Date,Title,@{name=”Operation”; expression={switch($_.operation){ 1 {“Installation”}; 2 {“Uninstallation”}; 3 {“Other”}}}}, @{name=”Status”; expression={switch($_.resultcode){ 1 {“In Progress”}; 2 {“Succeeded”}; 3 {“Succeeded With Errors”}; 4 {“Failed”}; 5 {“Aborted”}}}} | ConvertTo-HTML -Head $head -PreContent “<H2>Pilot Machine $env:computername – Patch Status Report</H2>” | out-string Send-MailMessage -SmtpServer “mailhost.domain.com” -Body $htmlbody -BodyAsHtml -From “email address” -To @(‘email address') -Subject “$env:computername Patch Report” } -ErrorAction Stop } Catch { Add-Content Unavailable-Computers.txt $Computer } }