Home > Lync Server/Skype for Business Server > Changelog: Get-CsConnections.ps1

Changelog: Get-CsConnections.ps1

This is the changelog page for Get-CsConnections.ps1. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v3.5 – 08-14-2019

  1. Added some cleanup for the VVX and Trio device agent strings. Thanks to @UcMadScientist. See https://www.ucmadscientist.com/quick-post-pat-richards-get-csconnections-and-polycom-devices/

v3.4 – 03-27-2018

  1. Added more bugs to fix later. 🙂
  2. Fixed -SkipUpdateCheck. Thanks to Mike for pointing it out.
  3. Fixed issue where preferred connection order would not display for Skype for Business users when using -SipAddress option
  4. Minor tweaks per PsScriptAnalyzer and PSSharper
  5. Updated Remove-Variable function to v1.2
  6. Get-UpdateInfo updated function to v1.5
  7. Set-ModuleStatus updated function to v1.6
  8. Write-Log updated function to v3.2

v3.3 – 01-04-2017

  1. Now requires at least PowerShell 3.0
  2. minor code cleanup
  3. updated Get-UpdateInfo to 1.1

v3.2 – 11-17-2016

  1. Added new update routine
  2. Signed with new certificate

v3.1 – 04-07-2016

  1. added -SkipUpdateCheck to skip update check

v3.0 – 09-09-2015

  1. clarified some examples in the help section
  2. added detection for Skype for Business Server 2015

v2.9 – 10-28-2014

  1. Fixed an issue where PowerShell v2.0 machines would choke on one line. Thanks to Thierry for pointing it out.
  2. New code-signing certificate to replace expired cert

v2.8 – 06-10-2014

  1. Clarified ShowTotal output per Nate’s comment
  2. Fixed an issue where LRS clients would show a leading space for the agent string
  3. changed FE server info to be lower case to that it’s consistent
  4. the -pool parameter is now -PoolFqdn to align with other scripts and cmdlets
  5. fine tuned some of the code used when specifying -SipAddress

v2.7 – 05-24-2014

  1. fixed check for updates dialog border
  2. defined OverallRecords as an array to avoid an issue. Thanks to Tristan for that info.
  3. fixed verbose output not showing server names. Thanks to Greig for pointing it out.

v2.6 – 02-08-2014

  1. tweaked the MaxEndpointsPerUser section to always use the global configuration. This only matters in environments where multiple configurations exist (Get-CsRegistrarConfiguration). Thanks to Matt for pointing this out.
  2. swaped in new version of Set-ModuleStatus function
  3. cleanup of param block per best practices
  4. cleanup of comment help per best practices
  5. swaped in new verion of Test-ScriptUpdates

v2.5 – 11-26-2013

  1. tweaked SQL query for case insensitivity per Jean-Luc
  2. comment help updated to include info on Windows firewall config
  3. tweaked code when getting info for a single user to fix missing data for pool connection order

v2.4 – 09-13-2013

  1. Fixed output for unique users/clients
  2. Now validates if UserHighConnectionFlag is specified, and does not exceed MaxEndPointsPerUser

v2.3 – 08-01-2013

  1. intro code for script update check
  2. better pool version detection. When using the -Pool option, you no longer need to specify -Is2013 if it’s a 2013 pool
  3. Added code to restart script in an elevated session if the current session isn’t elevated (previously the script just threw an error and exited)

v2.2 – 05-10-2013

  1. Added support for Lync Server 2013 by using the -Is2013 switch. If I can find a better way of automatically detecting the version, I’ll incorporate that in a later build.
  2. Some code optimization
  3. Bug fix for an issue where the names of servers in a pool wouldn’t display if the script was run in PowerShell v3.

v2.1 – 12-13-2012

  1. Minor formatting tweaks for better handling long client names, such as the Lync RT client.
  2. Minor bug fixes

v2.0 – 10.16.2012

  1. Added -IncludeHighUsers option. Similar to -IncludeUsers, but only shows those users who meet the UserHighConnectionFlag value (shown in white), or exceeds it (shown in red).
  2. Added -ShowTotal option. When finished, shows statistics for the org, including total number of Lync enabled users, the total number of voice enabled users, and the percentage of enabled users that are currently connected.
  3. Updated the code the assembles FQDNs when just a pool or server netbios name are specified.
  4. If -SipAddress option is used, additional information showing the preferred connection order for the user is now also included. This adds the functionality of one liners: Finding out which Lync pool servers a user is associated with, and the preferred connection order.

v1.9 – 09-21-2012

  1. Finally resolved the issue where some front end servers would have a different number for PrimaryRegistrarClusterId in SQL Express than others, causing some servers to not return data (and not throw an error). Special thanks to Dave Howe @ Microsoft for helping me identify a work around, and also to Bart, a SQL Engineer at a client site who helped me tweak the related SQL query.
  2. A little code optimization
  3. -Server option added that now allows you to target a specific server instead of an entire pool.
  4. This version is code signed. You no longer are required to have a PowerShell Execution Policy of unrestricted or RemoteSigned. However, the script cannot be edited at all, or the code signature breaks.
  5. -SipAddr now supports specifying just the left part of the SIP address, but only in organizations with ONE SIP domain. For example, -SipAddr bill.gates instead of -SipAddr bill.gates@microsoft.com.
  6. -Server supports specifying the netbios domain. The script will “guess” at the FQDN by using the domain name of the machine the script is running on and appending it to the netbios name.

v1.8 – 09-14-2012

  1. Tons of formatting changes, mostly subtle
    1. Server names in the pool list are sorted
    2. Server names in the ‘Frontend Server’ list are now sorted
    3. Connections are now sorted by client
  2. Added -ShowFullClient switch to show extended client info.
  3. If -pool is not specified, and only one registrar pool exists, the script will automatically use that pool.
  4. Some additional verbose output added for troubleshooting

v1.7 – 09-07-2012

  1. Minor display sorting cleanup
  2. Streamlined some code
  3. Removed -IncludeUsers from automatically being set when using -ClientVersion

v1.6 – 07-02-2012

  1. Added feature to show just specific client versions and the connected users with that client

v1.4 – 04-19-2012

  1. cleaned up some of the param() block and added some validation
  2. streamlined some of the code
  3. tweaked the displayed results a little to better handle longer agent strings

v1.3 – 12-27-2011

  1. tweaked the formatting a little to account for longer agent strings due to mobile clients
  2. ignore the RtcApplication-[guid] account when calculating users and displaying userlist
  3. added error if pool doesn’t have any servers
  4. added UserHighConnectionFlag in parameter block to support pipeline entry

v1.1 – 08-09-2011

  1. added comment based help
  2. added option to display user list
  3. updated formatting
  4. added code so it will run in a normal PowerShell session

v1.0 – 07-01-2011

  1. original version
  1. September 29th, 2014 at 13:16 | #1

    Hi Pat,

    It would be really nice if you could tweak the code to allow for alerting on if a phone is registered. I’d like to use your script to run as a scheduled task that checks to make sure a phone number (or sipuri) is registered to Lync. Example: Our security guards have VVX phoens with common area contacts (note VVX does not support hotdesking). I would like to run a scheduled task with the get-csconnections.ps1 to check if my security guard phones are not logged in. If they are not logged in i want the script to e-mail someone.


    • Pat Richard
      September 29th, 2014 at 13:19 | #2

      That would be completely different than what the script is intended for. I have been slowly working on something that will get true presence information of a SIP URI (including if someone is truly away or set to away but still working). Lots of work to do on it yet.

  2. Steve Pasikowski
    November 5th, 2014 at 16:44 | #3

    Hi Pat. Just started using your script this week as we have rolled out Lync to our enterprise. I am wondering if it is possible to get a listing of connections that shows client version and user ID. We apparently have 13 different versions of the Lync client and I would like to get a listing of all connections with client version and user version to sort in Excel. I know I can use the option “-ClientVersion” along with “-IncludeUsers” and run it for each of the 13 versions, but that is sort of a PITA. I was hoping for a way to list all users and their client versions in a single output. Am I missing something?

    • Steve Pasikowski
      November 5th, 2014 at 16:46 | #4

      Typo: “and user version to sort in Excel” should be “and user ID to sort in Excel”

    • Pat Richard
      November 10th, 2014 at 14:18 | #5


      • Steve Pasikowski
        November 10th, 2014 at 14:39 | #6

        It looks like the script already does what I was looking for if you use the “-FilePath” option. I was trying to do it interactively using some of the switches and not necessarily writing to a file. When I tried the FilePath option I see that it gives me exactly what I was looking for but it was not obvious, at least to me, when reviewing the instructions. So, thanks for writing such an awesome script and I am all set.

  3. Tony
    July 12th, 2015 at 18:53 | #7

    Recently upgraded our system to Skype for Business.
    The script no longer returns anything when run!
    .\get-csconnections.ps1 -includeusers -verbose

    VERBOSE: Matching with single “Identity” : “Global”
    VERBOSE: Matching with single “anchor” : “Global”
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Retrieving pool info
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Pool is now set to prllyncpool02.blah.blah

    Checking these pool servers in pool: prllyncpool02.blah.blah
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Gathering info from prlls84.blah.blah
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Gathering info from prlls85.blah.blah
    VERBOSE: Matching with wildcard pattern:
    VERBOSE: Matching with wildcard pattern:

    Nothing returned from query!

    Ran fine before upgrade

  4. Tony
    July 12th, 2015 at 18:59 | #8

    Ah found problem

    have to use -Is2013 to get it to work


  1. June 10th, 2014 at 09:36 | #1
  2. August 14th, 2019 at 00:17 | #2