Scripts/Connect-PSWSUSServer.ps1
Function Connect-PSWSUSServer { <# .SYNOPSIS Make the initial connection to a WSUS Server. .DESCRIPTION Make the initial connection to a WSUS Server. Only one concurrent connection is allowed. .PARAMETER WsusServer Name of WSUS server to connect to. If not value is given, an attempt to read the value from registry will occur. .PARAMETER SecureConnection Determines if a secure connection will be used to connect to the WSUS server. If not used, then a non-secure connection will be used. .PARAMETER Port Port number to connect to. Default is Port "80" if not used. Accepted values are "80","443","8350" and "8351" .NOTES Name: Connect-PSWSUSServer Author: Boe Prox Version History: 1.2 | 17 Feb 2015 -Renamed to Connect-PSWSUSServer -Allow read of registry for WUServer and Port 1.0 | 24 Sept 2010 -Initial Version .LINK https://learn-powershell.net .EXAMPLE Connect-PSWSUSServer -PSWSUSserver "server1" Description ----------- This command will make the connection to the WSUS using an unsecure port (Default:80). .EXAMPLE Connect-PSWSUSServer -WSUSserver "server1" -SecureConnection Description ----------- This command will make a secure connection (Default: 443) to a WSUS server. .EXAMPLE Connect-PSWSUSServer -WSUSserver "server1" -port 8530 Description ----------- This command will make the connection to the WSUS using a defined port 8530. #> [cmdletbinding()] Param( [Parameter(ValueFromPipeline = $True)] [Alias('Computername')] [string]$WsusServer, [Parameter()] [switch]$SecureConnection, [Parameter()] [ValidateSet("80","443","8530","8531" )] [int]$Port = 80 ) Begin { $ErrorActionPreference = 'Stop' If ($PSBoundParameters['SecureConnection']) { $Secure = $True } Else { $Secure = $False } } Process { If (-NOT $PSBoundParameters.ContainsKey('WSUSServer')) { #Attempt to pull WSUS server name from registry key to use If ((Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate -Name WUServer).WUServer -match '(?<Protocol>^http(s)?)(?:://)(?<Computername>(?:(?:\w+(?:\.)?)+))(?::)?(?<Port>.*)') { $WsusServer = $Matches.Computername $Port = $Matches.Port } } #Make connection to WSUS server Try { Write-Verbose "Connecting to $($WsusServer) <$($Port)>" $Script:Wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($wsusserver,$Secure,$port) $Script:_wsusconfig = $Wsus.GetConfiguration() Write-Output $Wsus } Catch { Write-Warning "Unable to connect to $($wsusserver)!`n$($error[0])" } Finally { $ErrorActionPreference = 'Continue' } } } |