connect-ExchangeServer.ps1
#Requires -Modules NetTCPIP function Connect-ExchangeServer { <# .SYNOPSIS Connects to remote Exchange server and imports management cmdlets. .DESCRIPTION This cmdlet establishes Powershell remoting session to Exchange server and imports all Exchange management cmdlets that are allowed to use by RBAC. You must connect to Exchange server, before you can use other antispam report cmdlets. If you use Exchange Management Shell, you are already connected. .PARAMETER ComputerName Exchange Server computer name to be connected. .PARAMETER Credential User credential that will be used to connect. By default locally logged on user will be used. If only username is provided, the credential prompt is provided. .PARAMETER PassThru Pass Exchange Server connection into user environment .EXAMPLE Connect-ExchangeServer -ComputerName myexchange Connects to exchange server named myexchange by using default credentials .EXAMPLE Connect-ExchangeServer -ComputerName myexchange -Credential 'domain\user' Connects to Exchange server by using provided username. The authentication prompt requests a password for the user name. .NOTES .LINK https://technet.microsoft.com/en-us/library/dd335083 #> [CmdLetBinding()] [OutputType([Management.Automation.Runspaces.PSSession])] Param( [parameter( Mandatory, HelpMessage='Exchange Server computer name' )] [string] $ComputerName, [System.Management.Automation.Credential()] [PSCredential] $Credential, [Switch] $PassThru ) $ConfigurationName = 'Microsoft.Exchange' $ConnectionUri = "http://$ComputerName/PowerShell/" $session = Get-PSSession -Name $ConnectionUri -ErrorAction SilentlyContinue if ($session) { Write-Verbose -Message 'Connection already established' if ($PassThru) { return $session } else { return } } else { $result = Test-NetConnection -ComputerName $ComputerName -CommonTCPPort WINRM -ErrorAction Stop if ($result.TcpTestSucceeded) { $sessionParams= @{ ConfigurationName = $ConfigurationName ConnectionUri = $ConnectionUri Authentication = 'Kerberos' Name = $ConnectionUri } if ($PSBoundParameters.ContainsKey('Credential')) { $sessionParams.Add('Credential',$Credential) } $session = New-PSSession @sessionParams $null = Import-PSSession -Session $session -CommandName Get-AgentLog if ($PassThru) { Get-PSSession -Name $ConnectionUri } } else { Write-Error -Message "Cannot connect to server: $ComputerName" } } } |