Function Add-WUOfflineSync { <# .SYNOPSIS Register offline scaner service. .DESCRIPTION Use Add-WUOfflineSync to register Windows Update offline scan file. You may use old wsusscan.cab or wsusscn2.cab from Microsoft Baseline Security Analyzer (MSBA) or System Management Server Inventory Tool for Microsoft Updates (SMS ITMU). .PARAMETER Path Path to Windows Update offline scan file (wsusscan.cab or wsusscn2.cab). .PARAMETER Name Name under which it will be registered Windows Update offline service. Default name is 'Offline Sync Service'. .EXAMPLE Try register Offline Sync Service from file C:\wsusscan.cab at default name. PS C:\> Add-WUOfflineSync -Path C:\wsusscan.cab Confirm Are you sure you want to perform this action? Performing operation "Register Windows Update offline scan file: C:\wsusscan.cab" on Target "G1". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y ServiceID IsManaged IsDefault Name --------- --------- --------- ---- a8f3b5e6-fb1f-4814-a047-2257d39c2460 False False Offline Sync Service .EXAMPLE Try register Offline Sync Service from file C:\wsusscn2.cab with own name. PS C:\> Add-WUOfflineSync -Path C:\wsusscn2.cab -Name 'Offline Sync Service2' Confirm Are you sure you want to perform this action? Performing operation "Register Windows Update offline scan file: C:\wsusscn2.cab" on Target "G1". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y ServiceID IsManaged IsDefault Name --------- --------- --------- ---- 13df3d8f-78d7-4eb8-bb9c-2a101870d350 False False Offline Sync Service2 .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-WUOfflineSync #> [OutputType('PSWindowsUpdate.WUServiceManager')] [CmdletBinding( SupportsShouldProcess=$True, ConfirmImpact="High" )] Param ( [parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [String]$Path, [String]$Name ) Begin { $DefaultName = "Offline Sync Service" $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(-not (Test-Path $Path)) { Write-Warning "Windows Update offline scan file don't exist in this path: $Path" Return } #End If -not (Test-Path $Path) If($Name -eq $null) { $Name = $DefaultName } #End If $Name -eq $null $objServiceManager = New-Object -ComObject "Microsoft.Update.ServiceManager" Try { If ($pscmdlet.ShouldProcess($Env:COMPUTERNAME,"Register Windows Update offline scan file: $Path")) { $objService = $objServiceManager.AddScanPackageService($Name,$Path,1) $objService.PSTypeNames.Clear() $objService.PSTypeNames.Add('PSWindowsUpdate.WUServiceManager') } #End If $pscmdlet.ShouldProcess($Env:COMPUTERNAME,"Register Windows Update offline scan file: $Path" } #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 :)