Posts Tagged ‘Lync Server 2010’

Quality of Service (QoS) Calculator – Plan Your Network, GPO, and Lync Config More Easily

November 5, 2014 7 comments


When deploying Microsoft Lync Server, network health and configuration can be crucial.

The QoS Calculator allows you to pick and choose what components and clients will be used in your environment as well as which specific clients. You’re also able to pick a starting port number, port count, and DSCP value for each modality. The calculator will ensure that port ranges are consecutive, and that they don’t extend past 65535. The calculator will list all relevant Group Policy Object (GPO) settings, as well as the PowerShell commands needed to configure Lync Server. Clients available for configuration include Lync 2010 and Lync 2013 full client, Lync 2010 Attendant and Landis Computer’s Attendant Pro attendant clients, Windows Store App client, Lync Phone Edition, and more. Server side options include A/V conferencing, application sharing, Response Group Service applications, Conference Announcement service, Call Park, UCMA apps, PSTN audio, A/V Edge services, Exchange UM, and the VDI client.

To start with, go to the INPUT tab. Any of the green cells can be changed. Reset buttons allow you to set port and port count settings back to their original values. Future releases will also reset the DSCP values as well (just need to figure out how to do that in Office VBA). Red cells indicate an error (missing or incorrect data).


Enter your Front End and Edge pool FQDNs. If you have a separate mediation pool, enter that name as well. The values defined here are used to compose the PowerShell commands needed to configure Lync Server.


You can show/hide different policy types using the appropriate checkboxes.


If your Mediation role is collocated with your Front End servers, check the box. This will combine the appropriate GPO policies together.


Changes to green cells are immediately reflected elsewhere in the calculator.

Once you have the values entered/verified, go to the POLICIES tab to see a list of GPO settings needed. Check out Elan Shudnow’s awesome Enabling QoS for Lync Server 2010 and Jeff Schertz’s Lync Quality of Service Behavior for a deep dive into setting up QoS.

Next, go to the POWERSHELL tab, and you’ll see the relevant Lync Management Shell commands to configure the server side based on the info you supplied. Copy and paste each into Lync Server Management Shell.

I have tons of ideas for more features and functionality. The next version will include the PowerShell code to automatically create and configure the GPOs. Feel free to comment below on things you’d like to see in future versions.




None. Just open the file in Excel. As this is a macro based file, you’ll need to enable content when prompted.




v1.0 – 11/5/2014 – Lync 2013 QoS Calculator v1.0.xlsm


See the changelog for information on what’s changes/included in each version.

Script: Get-CsFederatedConversationDetails.ps1 – See Stats About Conversations With Specific Federated Domains

May 13, 2014 9 comments

Lync 2013 logo 128x128Description

Richard Schwendiman, PFE at Microsoft, came up with a great SQL query that you could plug into SQL Server Management Studio to see time & date info for conversations with federated or PIC domains. In Richard’s case, he used the PIC domain. Since PIC federation with AOL and Yahoo is ending next month, I thought this was great timing on Richard’s part. But sometimes, Lync admins can’t login to SQL servers to run queries due to security policy. Plus, the query is something you’d have to keep handy and edit accordingly each time you wanted to get data. So I figured – hey, why not whip up a quick script to allow an admin to query SQL for this data, allowing for any domain and time frame to be specified? Poof – out comes my script.

This script will query a specific SQL server for information about a specific federated SIP domain. The domain does NOT need to be in the allowed domains list if you’re open federating. Any SIP domain name works. You can specify a start date/time in the yyyy-MM-dd format, such as 2014-05-13 using the -TimeSpan parameter. Or, you can use some handy ranges I’ve included, including LastWeek (the last 7 days), Last30Days, Last year (last 365 days), FirstOfYear or ThisYear (since Jan. 1), FirstOfMonth or ThisMonth (since the 1st of the month), FirstOfWeek or ThisWeek (since Sunday). Optionally, you can specify an end date/time in the yyyy-MM-dd format. This script will default to FirstOfYear with no end date, and for the domain. As we see below, only the SQL server holding the LcsCDR database is queried.


Now, from this output, we see that there is not a lot of communications with people on AOL since the first of the year. The upcoming change should have very little impact.

If you’re using a named instance in SQL, you can specify it as well.

The script outputs a full object, just like other cmdlets, so you can pipe it to other commands to alter the display, including sorting, or my favorite, Out-GridView, as well as outputting to files such as .csv.

Hopefully, this tool will make life a little easier in digging out data.


Get-CsFederatedConversationDetails.ps1 [[-SqlServer] ] [[-SqlInstance] ] [[-SipDomain] ] [[-TimeSpan] <object>] [[-EndDate] <object>] [-WhatIf ] [-Confirm ] [<commonparameters>]</commonparameters></object>


Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.




v1.0 – 05-13-2014 –


See the changelog for information on what’s changed/included in each version.


Changelog: Get-CsFederatedConversationDetails.ps1

This is the changelog page for Get-CsFederatedConversationDetails.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.

v1.0 – 05-13-2014

  1. Initial version

Script: Get-CsUpdateVersion.ps1 – See the Cumulative Update Level Of All Lync Servers

May 2, 2014 15 comments


My work at Modality Systems often has me doing health checks for customer Lync environments. These can be due to customer requests, or as part of our onboarding for new managed support customers. If you’ve ever had an Active Directory Risk Assessment Program (ADRAP) or Exchange Risk Assessment Program (ExRAP), it’s quite similar. Lots of tasks to run, lots of data to sift through. So it’s always beneficial to standardize and automate the steps to get the data. The same is the case when you’re responsible for your own environment and want to ensure good health.

Just like Get-CsDatabaseUpdateStatus.ps1, Dave Howe from the Lync product group and I teamed up to automate something. In this case, it’s looking at what Cumulative Updates are installed on each server throughout a Lync environment. This script queries each pool, then finds what servers are part of that pool, and queries each server to find the CU that’s installed. It then provides an easy to read output of the entire environment (with exceptions) for easy review. As shown below, we see three multi-server pools, the version number and “friendly” Cumulative Update info.


The script works fine with Standard Edition servers as well:


In the first example, you see that the first two servers show “PSRemoting failure”. This is because the script uses PowerShell Remoting to connect to each remote server to query information (see installation notes below). PSRemoting doesn’t really work the same when dealing with non-domain joined machines, such as the first two, which are edge servers. So the script isn’t able to communicate with them via PSRemoting, and flags them. If the script can’t ping a server, it will show as “offline”. The friendly name of the CU shown is coded in the script. So I’ll update it each time a new CU is released.

By default, the script checks all pools. But you can specify a single pool by using the -PoolFqdn parameter.


Get-CsUpdateVersion.ps1 [[-PoolFqdn] ] [-WhatIf] [-Confirm] []


This script uses PowerShell Remoting to query remote servers. PSRemoting is enabled by default on Windows Server 2012 and later, but disabled by default on 2008 R2. To enable PSRemoting on 2008 R2 servers, see Enable-PSRemoting.

Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.




v1.6 – 12-12-2014 –

v1.5 – 11-21-2014 –

v1.4 – 09-24-2014 –

v1.3 – 09-02-2014 –

v1.2 – 08-07-2014 – Get-CsUpdateVersion.v1.2,zip

v1.1 – 06-02-2014 –

v1.0 – 05-02-2014 –


See the changelog for information on what’s changed/included in each version.

Changelog: Get-CsUpdateVersion.ps1

This is the changelog page for Get-CsUpdateVersion.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.

v1.6 – 12-12-2014

  1. Added Lync Server 2013 CU 9 (5.0.8308.857)

v1.5 – 11-21-2014

  1. Added Lync Server 2013 post CU5 (5.0.8308.803)
  2. Added Lync Server 2013 CU 7 (5.0.8308.831)
  3. Added Lync Server 2013 CU 8 (5.0.8308.834)

v1.4 – 09-24-2014

  1. Added Lync Server 2013 CU6

v1.3 – 09-02-2014

  1. Added Lync Server 2010 CU12

v1.2 – 08-07-2014

  1. Added script check for updates. This is key because each time a new cumulative update comes out, the script will be updated with version info
  2. Added some preliminary code around getting version info for OWAS servers. Need to find a graceful way of getting the server names in a OWAS farm.
  3. Added Lync Server 2013 CU5

v1.1 – 06-02-2014

  1. Tweaked the PSRemoting code block for retrieving version numbers per Chris Irons. This should resolve unexpected results when querying Lync Server 2010 pools.
  2. Filtered out “Debugging Tools” “Resource Kit Tools” “Best Practices Analyzer” and “Meeting Room Portal” which could have a higher version number and cause incorrect results – thanks to Andy G for pointing that out.
  3. Shortened some of the output text to reduce the likelihood of word wrap.

v1.0 – 05-02-2014

  1. Initial version

Syntax Highlighting File for UltraEdit Includes Exchange 2010/2013, Lync 2010/2013, and ActiveDirectory cmdlets

May 8, 2013 3 comments

In a previous post, Exchange 2010 and Lync 2010 PowerShell syntax highlighting file for UltraEdit, I included the cmdlets for both Exchange 2010 and Lync 2010. In this new file, I’ve included Lync 2010, Lync 2013, Exchange 2010, Exchange 2013, and Active Directory cmdlets for highlighting. If you use UltraEdit, this wordfile may make life a little easier.

Download the file here:

ASP.NET Errors After Installing Lync Cumulative Update

October 24, 2012 2 comments

Here’s a little bit of fun I had while trying to find out who would be playing my beloved Detroit Tigers in the World Series. I needed to update our Lync servers, so installation of the October 2012 Cumulative Update was in order.

As soon as the Cumulative Update was done installing on one of our front end servers, SCOM started throwing alerts every 30 seconds. Essentially, they looked like this:

Oct 20 13:13:56 cltlb01 l4d: VS Lync External HTTPS meetContosoCom) Taken out of service due to failed Real Servers

Looking at the servers, the first front end server wasn’t reporting any issues. But the second was flooded with these in the application log:

Event log entry

Event log entry

Every time the HLB tried to do the health check, another ASP.NET exception would show up in the event log. We checked the HLB config, and it was properly set to connect to https://*/meet/blank.html for its deep health check. This is important because if you have it set to just check /meet or https://*meet/, I’ve seen this identical problem pop up. I verified that the file was at the correct location (C:\Program Files\Microsoft Lync Server 2010\Web Components\Join Launcher\Int), and that I could open it in IE. The file didn’t have a recent modified date. So, we changed the health check just to do a TCP bind to the server, and the problem went away. HLB was happy, and ASP.NET alerts stopped in the event log. Synthetic tests came back fine. Back to the baseball game, I figured.

Fast forward to Monday morning, when two users simultaneously contacted me to say that they were attempting to join a scheduled Lync meeting and getting the below error. Not the same meeting – two separate meetings.

Meeting join error

Meeting join error

They sent me the links, and I was able to successfully join both meetings, but I’m homed on a different server than those two users. The plot thickens.

I looked at the front end servers again, and sure enough, whenever someone would try to join either of those meetings, that trouble server would throw an ASP.NET error again. It wasn’t as fixed as I hoped.

I drained the server using Stop-CsWindowsService -Graceful, then stopped IIS using net stop w3svc. I navigated to C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 and ran aspnet_regiis.exe -i. I restarted the server, and suddenly the problem was gone. Everyone was able to join their meetings, and the server no longer was throwing ASP.NET errors. We changed the health check back to looking at /meet/blank.html, and all was good.

October 2012 Updates Released for Lync Server 2010

October 11, 2012 1 comment

The Lync team has released the October 2012 updates for Lync Server 2010 and related products. Here are some of the details:

2493736 Updates for Lync Server 2010


  1. 2735313 No notification of an incoming file transfer when you minimize a Lync 2010 conversation window
  2. 2735319 A user name that is included in a Lync Online meeting URL is incorrect when delegate is configured
  3. 2735321 “Block all” setting of the global file transfer filter does not work in Lync Server 2010
  4. 2735323 A call to an UCMA 3.0 endpoint is disconnected after 30 minutes


Lync Server 2010

  1. 2670358 Description of the cumulative update for Lync Server 2010, Administrative Tools: February 2012
  2. 2740403 Description of the cumulative update for Lync Server 2010, Core Components: October 2012
  3. 2701659 Description of the cumulative update for Lync Server 2010, Conferencing Attendant: June 2012
  4. 2514978 Description of the cumulative update for Lync Server 2010, Conferencing Server: November 2011
  5. 2737902 Description of the cumulative update for Lync Server 2010, Web Components Server: October 2012
  6. 2737915 Description of the cumulative update for Lync Server 2010: October 2012
  7. 2708616 Description of the cumulative update for Lync Server 2010, Web Conferencing Server: June 2012
  8. 2640253 Description of the cumulative update for Lync Server 2010, Mediation Server: November 2011
  9. 2740406 Description of the cumulative update for Lync Server 2010, Unified Communications Managed API 3.0 Runtime: October 2012
  10. 2650037 Description of the update for Lync Server 2010 Bandwidth Policy Service: December 2011
  11. 2743736 Description of the cumulative update for Lync Server 2010, Mobility Service: October 2012

Use the cumulative update installer, called LyncServerUpdateInstaller.exe to view and install the needed updates. That update can be downloaded here.


  1. 2737155 Cumulative Updates for Lync 2010
  2. 2752160 Cumulative Updates for Lync 2010 Attendee – Administrator level installation
  3. 2752157 Cumulative Updates for Lync 2010 Attendee – User level installation

Phone Edition

No updates listed

For information on updating Lync Phone Edition devices, see Jeff Schertz’s article Updating Lync Phone Edition Devices, as well as my script New-CsFirmware.ps1

Group Chat

No updates listed


Note: Pay close attention to the installation notes listed on the summary page. They include manual tasks that must be followed after installing the updates on Lync servers.

Review: Lync BusyLight by Kuando

September 24, 2012 Leave a comment

I’m sure you’ve had this happen. You’re sitting at your desk, deep in thought on a serious issue, and someone walks into your area and just starts talking. You don’t want to be rude and ignore them, and you really need to restrain from your desire to strangle them for causing that great troubleshooting thought to leave you head. If only they could see your Lync presence and know that you’re in Do Not Disturb. Well, now they can!

Lync BusyLight Introducing the BusyLight for Microsoft Lync from Kuando. This slick little device has a multicolored light on the top, and indicates your Lync presence using one of four colors. It does this via a USB connection and a simple little application that runs in the system tray. Available? The unit glows green. Do Not Disturb? Deep red should keep people away. And, of course, the normal green for available and yellow for away.

Also built into the unit is a call alert feature that blinks blue to indicate an incoming Lync call, and a small speaker with customizable ring tones.

The unit is adjustable for angle and can be attached to a wall or cabinet with the included velcro fastener.

I’ve had mine for several months now, and everyone in my house knows that while my home office door may be open, all hail the BusyLight before interrupting. I’ve taken it to client sites, too. In my current cube farm, my cube is a considerable distance from my team mates. So I placed it on top of my cube partition, and they can see it before making their way towards my cube.

The unit works great, but there is a little issue that it causes. The “what’s that?” issue. People who come up to my cube, point at it, and wonder what it does. So I take my time to explain what it is and what’s it purpose is. I even made a little sign with a little blurb about the device, complete with color coded indicators.



This is a neat little unit that has really helped me stay focused and uninterrupted. The only problem I’ve had with the unit is that over distance, the colors can be a bit washed out. The red for busy and the deep red for Do Not Disturb are a little too close together. And the “available” green fades a little towards the yellow of “away”. The only other suggestion I’d make is that the USB cord be a little longer. But that’s just my personal preference.

The BusyLight works with Windows XP SP3, Vista, and 7. A Windows 8 driver will be available soon. It is available from many resellers for about $49.00 USD.

Categories: Lync Server Tags: ,

Review: Jabra UC 250 MS Headset – Great Lync Travelling Headset

September 17, 2012 Leave a comment

Do you do a lot of travel and need to stay connected via Lync or Skype? The Jabra UC 250 MS headset is a nice addition to the travelling arsenal. The “MS” designation is for Microsoft Lync. It’s a simple mono over-the-ear design with an unobtrusive microphone and USB cable. The cable includes one of the better control units I’ve seen. Many control units have a basic mute switch that just cuts the audio to the computer. The UC 250 MS control unit has a button that mutes the Lync client. So, not only can you unmute from the control unit, but you can unmute from the client as well. Very nice, as I’m sure most people who use the typical mute option on a headset find themselves scrambling to unmute in a hurry. The mute button has a nice bright red LED to indicate the headset is muted. It also has your typical volume controls, and  a handy on/off hook button. The device is supported by the Jabra  PC Suite software. The UC 250 MS comes with a taco shaped zippered case for storage. It’s available online in the $40 range.

Jabra UC Voice 250 headset

Jabra UC Voice 250 headset

DSP Digital Signal Processing yields great sound in applications such as Lync or Skype. Recipients have reported that my voice was clear and accurate, and didn’t have that typical cheap headset sound. The cord is long enough for my use, but was a bit stiff for me. I didn’t need to use the PC Suite software, so I can’t comment on it here. One thing I did notice is it was a tad cumbersome to get it on my ear. But once it was on, it stayed in place, and the gel style insert was comfortable even for longer calls. My laptop quickly found the headset and had the drivers installed without issue. A simple selection change in Lync and I was off and running.

I’ve used the headset for many calls and can say it’s a great headset for its price point. Simple, inexpensive, and it works. It doesn’t hurt that it takes up hardly any room for storage. If you’re looking for something to toss in your backpack or use at your desk, check out the Jabra UC 250 Voice MS.

Categories: Lync Server Tags: ,