Get-WUInstallerStatus.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
Function Get-WUInstallerStatus { <# .SYNOPSIS Show Windows Update Installer status. .DESCRIPTION Use Get-WUInstallerStatus to show Windows Update Installer status. .PARAMETER Silent Get only status True/False without any more comments on screen. .EXAMPLE Check if Windows Update Installer is busy. PS C:\> Get-WUInstallerStatus Installer is ready. .EXAMPLE Check if Windows Update Installer is busy in silent mode. Return only True (isBusy) or False (isFree). PS C:\> Get-WUInstallerStatus -Silent False .NOTES Author: Michal Gajda Blog : http://commandlinegeeks.com/ .LINK http://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc .LINK Get-WURebootStatus #> [CmdletBinding( SupportsShouldProcess=$True, ConfirmImpact="Low" )] Param ( [Switch]$Silent ) Begin { $User = [Security.Principal.WindowsIdentity]::GetCurrent() $Role = (New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator) if(!$Role) { Write-Warning "To perform some operations you must run an elevated Windows PowerShell console." } #End If !$Role } Process { If ($pscmdlet.ShouldProcess($Env:COMPUTERNAME,"Check that Windows Installer is ready to install next updates")) { $objInstaller=New-Object -ComObject "Microsoft.Update.Installer" Switch($objInstaller.IsBusy) { $true { If($Silent) {Return $true} Else {Write-Output "Installer is busy."}} $false { If($Silent) {Return $false} Else {Write-Output "Installer is ready."}} } #End Switch $objInstaller.IsBusy } #End If $pscmdlet.ShouldProcess($Env:COMPUTERNAME,"Check that Windows Installer is ready to install next updates") } #End Process End{} } #In The End :) |