Function Add-WUServiceManager { <# .SYNOPSIS Register windows update service manager. .DESCRIPTION Use Add-WUServiceManager to register new Windows Update Service Manager. .PARAMETER ServiceID An identifier for the service to be registered. Examples Of ServiceID: Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 .PARAMETER AddServiceFlag A combination of AddServiceFlag values. 0x1 - asfAllowPendingRegistration, 0x2 - asfAllowOnlineRegistration, 0x4 - asfRegisterServiceWithAU .PARAMETER authorizationCabPath The path of the Microsoft signed local cabinet file (.cab) that has the information that is required for a service registration. If empty, the update agent searches for the authorization cabinet file (.cab) during service registration when a network connection is available. .EXAMPLE Try register Microsoft Update Service. PS H:\> Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" Confirm Are you sure you want to perform this action? Performing the operation "Register Windows Update Service Manager: 7971f918-a847-4430-9279-4a52d1efe18d" on target "MG". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y RegistrationState ServiceID IsPendingRegistrationWithAU Service ----------------- --------- --------------------------- ------- 3 7971f918-a847-4430-9279-4a... False System.__ComObject .NOTES Author: Michal Gajda Blog : http://commandlinegeeks.com/ .LINK http://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc .LINK http://msdn.microsoft.com/en-us/library/aa387290(v=vs.85).aspx http://support.microsoft.com/kb/926464 .LINK Get-WUServiceManager Remove-WUServiceManager #> [OutputType('PSWindowsUpdate.WUServiceManager')] [CmdletBinding( SupportsShouldProcess=$True, ConfirmImpact="High" )] Param ( [parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [String]$ServiceID, [Int]$AddServiceFlag = 2, [String]$authorizationCabPath ) 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 { $objServiceManager = New-Object -ComObject "Microsoft.Update.ServiceManager" Try { If ($pscmdlet.ShouldProcess($Env:COMPUTERNAME,"Register Windows Update Service Manager: $ServiceID")) { $objService = $objServiceManager.AddService2($ServiceID,$AddServiceFlag,$authorizationCabPath) $objService.PSTypeNames.Clear() $objService.PSTypeNames.Add('PSWindowsUpdate.WUServiceManager') } #End If $pscmdlet.ShouldProcess($Env:COMPUTERNAME,"Register Windows Update Service Manager: $ServiceID" } #End Try Catch { If($_ -match "HRESULT: 0x80070005") { Write-Warning "Your security policy don't allow a non-administator identity to perform this task" } #End If $_ -match "HRESULT: 0x80070005" Else { Write-Error $_ } #End Else $_ -match "HRESULT: 0x80070005" Return } #End Catch Return $objService } #End Process End{} } #In The End :)