Connect to Microsoft Lync Server 2010 Remote PowerShell from the Desktop

By Nick Smith, Microsoft

Before running this script, ensure that the client meets all the requirements for a remote connection to Windows PowerShell. Here are the requirements:

· Windows PowerShell v2.0

· .NET Framework 2.0 Service Pack 1

· Windows Remote Management (WinRM) 2.0

The requirements are included in the Windows Management Framework, available for download. (For a detailed description of system requirements for Windows PowerShell 2.0, check out this support article: https://support.microsoft.com/kb/968929.)

To create a desktop shortcut to start a Windows PowerShell remote session connected to Microsoft Lync Server 2010, follow these instructions:

1. Open Notepad (or your favorite text or script editor).

2. Copy the following script and paste it into Notepad.

#*******************************************************************************

#* Author: Nick Smith (karsmith@microsoft.com)

#* Date: 6/20/2010

#* Purpose: This is a script that can be used when creating desktop icons that

#* will allow the user an easy way of connecting to remote powershell into a

#* Lync Server environment.

#* NOTE: THIS WAS DEVELOPED AGAINST LYNC SERVER BETA AND DOES NOT INCLUDE MUCH

#* ERROR CHECKING. USE AT YOUR OWN RISK.

#*******************************************************************************

Param (

    [switch] $AuthenticationPrompt = $false,

    [string] $CSPoolFQDN = (read-host "Enter the FQDN of the Lync Server Pool"),

    [string] $AdminUsername = "domain\username"

)

$Error.Clear()

If ($AuthenticationPrompt) {

    Write-Host -ForegroundColor Green "Requesting Credentials for Lync Server Administrative Session"

    $CSSession = New-PSSession -ConnectionUri https://$CSPoolFQDN/ocspowershell -Credential $AdminUsername -ErrorAction SilentlyContinue

}

else {

    $CSSession = New-PSSession -ConnectionUri https://$CSPoolFQDN/ocspowershell -Authentication NegotiateWithImplicitCredential -ErrorAction SilentlyContinue

}

If ($Error.count -gt 0){

    Write-Host -ForegroundColor Red "Unable to Connect to Lync Server Administrative Session`n Error:" $Error

}

else {

    $ImportResults = Import-PSSession -Session $CSSession

    Write-Host -ForegroundColor Green "Connected to Lync Server Administrative Session`nImported" $ImportResults.ExportedFunctions.count "CS Functions"

}

cd $env:UserProfile

3. Save the file with a .ps1 extension, for example, C:\Scripts\Start-CsRemotePowerShell.ps1

4. Create an shortcut on the client desktop with the following target. Be sure the change the highlighted values to match your environment.

o To use integrated authentication

§ powershell.exe -noexit -executionpolicy bypass -file c:\scripts\start- csremotepowershell.ps1 –CSPoolFQDN CSPool01.contoso.local

o To use an authentication prompt

§ powershell.exe -noexit -executionpolicy bypass -file c:\scripts\start- csremotepowershell.ps1 -AuthenticationPrompt -CSPoolFQDN CSpool01.contoso.local -AdminUsername contoso\administrator

Comments

  • Anonymous
    January 01, 2003
    The comment has been removed

  • Anonymous
    January 01, 2003
    Thanks for pointing this out. .NET Framework 2.0 SP1 is actually a requirement for any installation of Windows PowerShell 2.0. We've updated the article with this info, plus added a link that will take you to a more detailed list of requirements for PowerShell 2.0

  • Anonymous
    August 08, 2010
    Hi this is useful thanks.

  • Anonymous
    October 05, 2010
    Hi, For a windows XP SP3 Desktop, it requires also .NET Framework 2.0 SP1

  • Anonymous
    October 06, 2010
    What a prompt answer ! I'm currently testing your script and experiencing a strange error with the 2 authentication ways : " The SSL certificate could not be checked for revocation. The server used to chec k for revocation might be unreachable. For more information, see the about_Remot e_Troubleshooting Help topic. " Have you ever heard about this ?? Thanks a lot for any answer :o)

  • Anonymous
    October 07, 2010
    Whenever you connect to an HTTPS URL, such as is used for remote PowerShell, the server needs to have a certificate 'proving' it matches the URL you entered, to prevent someone spoofing the website. To make sure the cert is valid, the client program needs to check with the certificate authority (CA) which issued the certificate to see if it's been revoked. This error indicates that it wasn't able to do so. This can happen if (for example) you used an internal CA within your company firewall to issue a cert, then try to connect from outside the firewall, though there are other posibilities. You may be able to diagnose what's up with the certificate checking based on the above; alternatively, you can work around the problem at the risk of lowering security if you run $so = new-pssessionoptions -skiprevocationcheck then pass -SessionOptions $so as an extra argument to the New-PsSession command you're using to connect. [By the way, it is not necessary to run Enable-PSRemoting to use Lync's remote powershell implementation, because we don't use the default remoting endpoint anyway]