System Center Configuration Manager Slideshow

  1. <# Establising Connection to WSUS Server#> 
  2. [void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration"
  3. [void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic'
  4. $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer(); 
  5. <# These Commands will Show the Synchronization Progress details#> 
  6. $sub = $wsus.GetSubscription() 
  7. $Msg1 = [Microsoft.VisualBasic.Interaction]::MsgBox("Do you want to Start Synchronization?", 'YesNo,Question', "WSUS Automation - Team IT"
  8. $a = new-object -comobject wscript.shell 
  9. $LastSync = $Sub.LastSynchronizationTime.tostring('MM/dd/yyyy'
  10. Switch ("$Msg1"
  11. 'Yes'
  12. $sub.StartSynchronization(); 
  13. do
  14. $a.popup("Synchronization is in Progress.",7,"WSUS Automation - Team IT"
  15. Start-Sleep -Seconds
  16. $Status = $sub.GetSynchronizationProgress() 
  17.   }until ($Status.Phase -like "*NotProcessing*"
  18.       
  19. 'No' {$a.popup("Last Sync - $LastSync",7,"WSUS Automation - Team IT")} 
  20. #$sub.StartSynchronization() 
  21. #Write-Host "Synchronization have been started."  
  22. #Start-Sleep -Seconds 3 
  23. #$sub.GetSynchronizationProgress()  
  24. #[Array] $SyncDetails = $sub.GetSynchronizationHistory() 
  25. $sub = $wsus.GetSubscription() 
  26. $LastSync = $Sub.LastSynchronizationTime.tostring('MM/dd/yyyy'
  27. $LastSyncPatches = $wsus.getupdates() |Select-Object Title,ArrivalDate,IsDeclined,IsApproved | Where-object {$_.ArrivalDate -like "*$LastSync*" -and $_.IsDeclined -like "False"}  
  28. #<All the Latest Sync patches details will be saved in C:\># 
  29. $LastSyncPatches |FT Title > C:\$($(get-date).tostring('MM-dd-yyyy'))_FullDetails_LastSyncPatches.txt 
  30. $a.popup("Full Patches details are saved @ patch C:\$($(get-date).tostring('MM-dd-yyyy'))_FullDetails_LastSyncPatches.txt ",7,"WSUS Automation - Team IT"
  31.  
  32. ############Code to Decline Unwanted Patches############ 
  33.  
  34. $ItaniumPatches = $LastSyncPatches |Select-Object Title,ArrivalDate,IsDeclined | Where-object {$_.Title -like "*Itanium*" -and $_.ArrivalDate -like "*$LastSync*" -and $_.Isdeclined -like "False"
  35. $ItaniumPatches |FT Title > C:\$($(get-date).tostring('MM-dd-yyyy'))_Declined_ItaniumPatches_Details.txt 
  36. $a.popup("Itanium Patches to be Declined are saved @ C:\$($(get-date).tostring('MM-dd-yyyy'))_Declined_ItaniumPatches_Details.txt ",5,"WSUS Automation - Team IT"
  37. $Msg2 = [Microsoft.VisualBasic.Interaction]::MsgBox("'YES' to decline Itanium Patches - 'NO' to Approve Itanium Patches ?", 'YesNo,Question', "WSUS Automation - Team IT"
  38. switch ("$Msg2"
  39. 'Yes'
  40. foreach ($ItaniumPatche in $ItaniumPatches
  41. $ItanDecline = $ItaniumPatche.Title 
  42. #$PatDecline = $wsus.Searchupdates("$ItanDecline") 
  43. $PatDecline = $wsus.getupdates() |Select-Object | where-object {$_.Title -eq "$ItanDecline" -and $_.Isdeclined -like "False" -and $_.IsApproved -like "False"
  44. $PatDecline.Decline($True
  45. Write-Host $ItaniumPatche.Title "- has been Declined" 
  46. $ItanDecline = $Null 
  47.       
  48. 'No' {}        
  49. }      
  50. ############Code to Approve the Patches################### 
  51. $Action = [Microsoft.UpdateServices.Administration.UpdateApprovalAction]::Install 
  52. $LastSyncPatches_Approves = "" 
  53. $LastSyncPatches_Approves = $wsus.getupdates() |Select-Object Title,ArrivalDate,IsDeclined,IsApproved | Where-object {$_.ArrivalDate -like "*$LastSync*" -and $_.Isdeclined -like "False" -and $_.Isapproved -like "False"
  54. $LastSyncPatches_Approves |FT Title > C:\$($(get-date).tostring('MM-dd-yyyy'))_TO_Approve-Patches_Details.txt 
  55. $ToApprove = $LastSyncPatches_Approves |FT Title 
  56. $a.popup("Remove the Patches from the List which should not be Approved - Available @ patch C:\$($(get-date).tostring('MM-dd-yyyy'))_FullDetails_LastSyncPatches.txt ",7,"WSUS Automation - Team IT"
  57. $Msg3 = [Microsoft.VisualBasic.Interaction]::MsgBox("'YES' to Confirm for Go-Ahead ? - 'NO' for Exit", 'YesNo,Question', "WSUS Automation - Team IT"
  58. $Targetgroup = ($wsus.GetComputerTargetGroups() | ? {$_.Name -eq "Preinstall"}) 
  59. switch ("$Msg3"
  60. 'Yes' 
  61. [Array] $PatchApprove = Get-content "C:\$($(get-date).tostring('MM-dd-yyyy'))_TO_Approve-Patches_Details.txt" 
  62. $Incr =
  63. $lpEnd = $PatchApprove.count -
  64. do
  65. $ApprovedPat = $PatchApprove[$incr].trimend() 
  66. $PatAppr = $wsus.getupdates() |Select-object | where-object {$_.Title -like "*$ApprovedPat*"-and $_.Isdeclined -like "False" -and $_.IsApproved -like "False"
  67. $PatAppr.Approve($Action,$Targetgroup) | out-null 
  68. Write-Host $PatchApprove[$incr] "- has been Approved" 
  69. $Incr = $Incr +
  70.   }until ($Incr -eq $lpEnd
  71.  
  72. <# 
  73. $PatchApprove = Get-content "C:\$($(get-date).tostring('MM-dd-yyyy'))_TO_Approve-Patches_Details.txt" 
  74. foreach ($PatchAppr in $PatchApprove
  75. $PatAppr = $wsus.getupdates() |Select-object | where-object {$_.Title -eq "PatchAppr*"-and $_.Isdeclined -like "False" -and $_.IsApproved -like "False"
  76. $PatAppr.Approve($Action,$Targetgroup) | out-null 
  77. Write-Host $PatchAppr "- has been Approved" 
  78. } > c:\PhaniTestOP.txt   
  79. #> 
  80. 'No' 
  81. $a.popup("Patches were not Approved - Exiting the Script",0,"WSUS Automation - Team IT"
  82. exit 
 
Loading...
Concentrated Tech NSoftware Dell Compellent Sponsored by Idera and Concentrated Tech and NSoftware and Dell Compellent
Copyright 2011 PowerShell.com. All rights reserved.