Teams: Check client version using PowerShell

An easy way to check MS Teams version is in the client by going to About > Version:

The version will be displayed near the Command Box:

The MS Teams client is installed per user and the version is stored in the settings.json file:

%AppData%\Microsoft\Teams\

Using PowerShell we can convert JSON files to PowerShell Objects:

PowerTip: Convert JSON File to PowerShell Object
https://blogs.technet.microsoft.com/heyscriptingguy/2014/04/23/powertip-convert-json-file-to-powershell-object/

Now we can run the following PowerShell cmdlet to get the Teams client version:

Get-Content $env:UserProfile”\AppData\Roaming\Microsoft\Teams\settings.json” | ConvertFrom-Json | Select Version, Ring, Environment

The install/update date is in the installTime.txt file in the same folder:

Get-Content $env:UserProfile”\AppData\Roaming\Microsoft\Teams\installTime.txt”

Note: The date is stored in MM/dd/yyyy

Since MS Teams is installed on a user level we can have multiple versions on the same machine.

To check all the installed versions we can use a PowerShell Script that will execute the previous cmdlets for each user.

The script is available in TechNet Gallery and doesn’t take any parameter:

MS Teams installed version for each user profile
https://gallery.technet.microsoft.com/MS-Teams-Get-installed-60c0dc5c

Get-TeamsVersion.ps1

Thanks to The Scripting Guys for a way to list the user profile paths:

Use PowerShell to Find User Profiles on a Computer
https://blogs.technet.microsoft.com/heyscriptingguy/2011/11/10/use-powershell-to-find-user-profiles-on-a-computer/

Lync and Skype for Business Desktop Client Versions (MSI/C2R)

We receive a few number of questions related to the different versions of Skype for Business clients that are available.

If you already use Office 365 then probably you have the Skype for Business  2016 C2R (Click-to-Run).

Skype for Business 2016 C2R (Click-to-Run)

This is the version that is available in Office 365 and it contains the latest features, moving forward this version is also recommended for OnPrem (Lync Server 2013 and Skype for Business Server 2015).

How to check version:

Options > Help > About Skype for Business:

To check the Channel we need to go to another Office application, then File > Office Account:

Update List

Version and build numbers of update channel releases for Office 365 clients
https://technet.microsoft.com/library/mt592918.aspx

Basic Version

How to install the Skype for Business Basic stand-alone client
https://support.microsoft.com/kb/3139711/


Skype for Business 2016 MSI

This version is the Volume License version and doesn’t include all the features available in SfB 2016 C2R.

Both versions are supported but it’s recommended to use the SfB 2016 C2R version instead.

How to check the version

Please note that the version displayed in the Help > About is the MSO version and not the SfB Version.

To check the installed update we can use the following PowerShell cmdlet:

Get-ItemProperty “HKLM:\Software\Microsoft\Windows\CurrentVersion\App Paths\Lync.exe” | ForEach-Object {Get-ChildItem -Path $_.Path -Recurse lync.exe | Select-Object -ExpandProperty VersionInfo | Select FileDescription,ProductVersion}

Alternatively, go to the Tracing Folder and check the ETL filename:

%userprofile%\AppData\Local\Microsoft\Office\16.0\Lync\Tracing

Update List

Skype for Business 2016 Client Update List
https://uclobby.wordpress.com/2016/07/08/skype-for-business-2016-client-update-list/

Basic Version

Microsoft Skype for Business Basic (32/64 Bit)
https://www.microsoft.com/download/details.aspx?id=49440

Please note that SfB Basic version doesn’t include the same features as the SfB2016 MSI client, however, we can use the same updates.


Lync 2013/Skype for Business 2015 C2R (Click-to-Run)

This version was available for Office 365 and it contains the same features as the Lync 2013/Skype for Business 2015 MSI

How to check the version

Options > Help > About Skype for Business

We can also check on another Office application, then File > Office Account:

Update List

Update history for Office 2013
https://support.office.com/article/Update-history-for-Office-2013-19214f38-85b7-4734-b2f8-a6a598bb0117


Lync 2013/Skype for Business 2015 MSI

This version started as Lync 2013 and it was renamed to Skype for Business 2015 on April 14, 2015. This version has the same features as Lync2013/SfB2015 Click-to-Run.

How to check the version

Options > Help > About Skype for Business

Update List

Lync 2013/Skype for Business 2015 Client Update List
https://uclobby.wordpress.com/2016/10/09/lync-2013-skype-for-business-2015-client-update-list/

Basic Version

Microsoft Lync Basic 2013 (32 Bit)
https://www.microsoft.com/download/details.aspx?id=35451

Microsoft Lync Basic 2013 (64 Bit)
https://www.microsoft.com/download/details.aspx?id=35450

Please note that these versions doesn’t include the same features as the Lync2013/SfB2015 MSI client, however, we can use the same updates.

Desktop client feature comparison for Skype for Business Server 2015
https://docs.microsoft.com/skypeforbusiness/plan-your-deployment/clients-and-devices/desktop-feature-comparison

Skype Room Systems V2 Update List: August 2018

Here is the update list for the Skype Room System V2:

Download the latest Skype Room System v2 Deployment Kit

Version Release Date More Info
4.0.19.0 August 31, 2018 Release Notes
4.0.18.0 August 27, 2018 Release Notes
4.0.8.0 July 6, 2018 Release Notes
3.1.115.0 June 20, 2018 Release Notes
3.1.113.0 June, 2018 Release Notes
3.1.104.0 April 16, 2018 Release Notes
3.1.100.0 March 16, 2018 Release Notes
3.1.99.0 March 14, 2018 Release Notes
3.1.98.0 March 8, 2018 Release Notes
3.0.16.0 November 27, 2017 Release Notes
3.0.15.0 October 3, 2017 Release Notes
3.0.12.0 September 1, 2017 Release Notes
3.0.10.0 August 10, 2017 Release Notes
3.0.8.0 August 4, 2017 Release Notes
3.0.6.0 June 2, 2017
2.0.2.0 March 15, 2017
1.0.8.0 December 7, 2016 RTM

Lync/SfB Client: Disable file upload to external conferences

In the March 2018 update for Lync2013/SfB2015 and SfB2016 a new setting was included that can disable file upload to external conferences (Federated and Anonymous).

Before this update the Lync/SfB Client didn’t had a setting that could prevent file upload to external meetings:

We can configure the EnableExternalFileTransferInConference setting with Inband Policy or Register Key:

Inband Policy

$a = New-CsClientPolicyEntry –Name “EnableExternalFileTransferInConference” –Value $false
Set-CsClientPolicy –Identity <Policy Name> –PolicyEntry @{Add=$a}

Command Prompt

Lync 2013/Skype for Business 2015
reg add HKLM\Software\Policies\Microsoft\Office\15.0\Lync /v EnableExternalFileTransferInConference /t REG_DWORD /d 0 /f

Skype for Business 2016
reg add HKLM\Software\Policies\Microsoft\Office\16.0\Lync /v EnableExternalFileTransferInConference /t REG_DWORD /d 0 /f

PowerShell

Lync 2013/Skype for Business 2015
New-Item -Path “HKLM:Software\Policies\Microsoft\Office\15.0\Lync” -Force
New-ItemProperty -Path “HKLM:Software\Policies\Microsoft\Office\15.0\Lync” -Name EnableExternalFileTransferInConference -Type DWORD -Value 0 -Force

Skype for Business 2016
New-Item -Path “HKLM:Software\Policies\Microsoft\Office\16.0\Lync” -Force
New-ItemProperty -Path “HKLM:Software\Policies\Microsoft\Office\16.0\Lync” -Name EnableExternalFileTransferInConference -Type DWORD -Value 0 -Force

Please note that this registry key is available on a User Level (HKCU) and Local Machine (HKLM).

After disabling the upload the users won’t be able to upload file to External Conferences:

Please note that EnableExternalFileTransferInConference won’t block users to download files from external conferences:

The EnableExternalFileTransferInConference setting is available in the following Lync/SfB Client versions:

Office 365 ProPlus/Office Professional Plus 2016 Click-to-Run (after 16.0.8827.2082)
https://technet.microsoft.com/en-us/library/mt592918.aspx

March 6, 2018, update for Skype for Business 2015 (Lync 2013) (KB4018290) (15.0.5015.1000)
https://support.microsoft.com/kb/4018290

March 6, 2018, update for Skype for Business 2016 (KB4011725) (16.0.4666.1000)
https://support.microsoft.com/kb/4011725

Cannot remove the Director Pool – Users or Contacts are associated to it.

While trying to decommissioning a Lync Server 2013 Director Pool we got the following error message when we publish the new topology:

This wasn’t expected since a Director Pool shouldn’t have users associated with it.

After troubleshooting the issue, we notice that some users had the attribute msRTCSIP-PrimaryHomeServer associated to the Lync Server 2013 Director Pool.
These users were previously moved to Skype for Business Online, during the move the attribute was updated to the Director Pool that was configured as federation route.
Please note that this behaviour can also happen if we have a Front End Server Pool in the federation route.

Because the msRTCSIP-PrimaryHomeServer attribute isn’t used by Skype for Business Online we can clear it.

The first step is to get the Pool Distinguished Name and the quickest way is using View Logs in the Publishing Wizard:

Then, we Expand all Actions and scroll down to Check Orphaned Users:

In this example the Pool Distinguished Name is:

CN=Lc Services,CN=Microsoft,CN=1:8,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=uclobby,DC=com

And we assign it to a variable ($PoolDN):

$PoolDN=”CN=Lc Services,CN=Microsoft,CN=1:8,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=uclobby,DC=com”
$PoolDN

Alternatively, we can use PowerShell to get the Pool Distinguished Name:

Import-module ActiveDirectory
$RTCDN = “AD:\CN=*,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,”+(Get-ADDomain).distinguishedname
$PoolDN=”CN=Lc Services,CN=Microsoft,”+(Get-ItemProperty -Path $RTCDN -Name dNSHostName,distinguishedname | ?{$_.dNSHostName -eq “<POOL FQDN>“}).distinguishedname

Now we can list the all users that have msRTCSIP-PrimaryHomeServer attribute associated to the pool:

Get-CsUser -LDAPFilter “(msRTCSIP-PrimaryHomeServer=$PoolDN)” | Select SamAccountName,DisplayName,SipAddress,HostingProvider | ft -AutoSize

Note: We can only use this workaround if the HostingProvider is sipfed.online.lync.com.

If we have few users we can simply clear the msRTCSIP-PrimaryHomeServer attribute manually:

Get-ADuser <USERACCOUNT> | Set-ADObject -Identity $_.distinguishedname -Clear “msRTCSIP-PrimaryHomeServer”

However, if we want to clear the attribute for all users associated to the Lync Server 2013 Director Pool we should use the following:

Get-ADObject -LDAPFilter “(& (msRTCSIP-PrimaryHomeServer=$PoolDN)(msRTCSIP-DeploymentLocator=sipfed.online.lync.com))” | Set-ADObject -Clear “msRTCSIP-PrimaryHomeServer”

Note: We added the msRTCSIP-DeploymentLocator since we can only clear the msRTCSIP-PrimaryHomeServer if the users were moved to Skype for Business Online.

After clearing the msRTCSIP-PrimaryHomeServer attribute we successfully remove the Lync Server 2013 Director Pool:

SfBMac: Cannot connect to EWS after enabling EWS Access Policy

In a recent support case the Skype for Business Mac client wasn’t connecting to Exchange Web Services (EWS) after the EWS Access Policy was configured with the following cmdlets:

Set-CASMailbox -Identity brick@borderlands.lab -EwsApplicationAccessPolicy EnforceAllowList -EwsAllowOutlook $true -EwsAllowMacOutlook $true
Set-CASMailbox -Identity brick@borderlands.lab -EwsAllowList @{add=’UCWA/*’, ‘OC/*’, ‘OWA/*’}
https://technet.microsoft.com/library/bb125264(v=exchg.160).aspx

Get-CASMailbox -Identity brick@borderlands.lab | fl Name,EwsApplicationAccessPolicy,EwsAllowOutlook,EwsAllowMacOutlook,EwsAllowList

EWS was working except on Skype for Business Mac, after reviewing the logs the issue was that SfB Mac user agent is SfBForMac.
To fix this we simply add SfBForMac to the EwsAllowList with:

Set-CASMailbox -Identity brick@borderlands.lab -EwsAllowList @{add=’SfBForMac/*’}

Please note that the previous example was only for a test user, we can also configure it on the Organization Level:

Set-OrganizationConfig -EwsApplicationAccessPolicy EnforceAllowList -EwsAllowOutlook $true -EwsAllowMacOutlook $true -EwsAllowList @{add=’SfBForMac/*’,’UCWA/*’, ‘OC/*’, ‘OWA/*’}
https://technet.microsoft.com/library/aa997443(v=exchg.160).aspx

Get-OrganizationConfig |fl Name,EwsApplicationAccessPolicy,EwsAllowOutlook,EwsAllowMacOutlook,EwsAllowList

SfB Server – Prerequisite installation failed: SqlInstanceRtcLocal

Recently while adding a new Front End Server to the existing Skype for Business Enterprise Pool we got the following message on SfB Deployment Wizard Step 1:

Prerequisite installation failed: Prerequisite installation failed: SqlInstanceRtcLocal For more information, check your SQL Server log files. Log files are in the folder C:\Program Files\Microsoft SQL Server\MSSQL*.RtcLocal\MSSQL\Log, where the * represents your SQL Server version number. For example, SQL Server 2012 uses this path: C:\Program Files\Microsoft SQL Server\MSSQL11.RtcLocal\MSSQL\Log.

After attempting to run Step 1 a second time the error message was slightly different:

Prerequisite not satisfied: SupportedSqlRtcLocal: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Shared Memory Provider, error: 40 – Could not open a connection to SQL Server)

The SQL Server (RTCLOCAL) service was installed but stopped:

We tried to start the service without success:

Windows could not start the SQL Server (RTCLOCAL) on Local Computer. For more information, review the System Event Log. If this is a non-Microsoft service, contact the service vendor, and refer to service-specific error code 5023.

And looking in Event Viewer > Windows Logs > System we could find two related errors:

Log Name: System
Source: Schannel
Date: 16/10/2017 18:35:40
Event ID: 36871
Task Category: None
Level: Error
Keywords:
User: SYSTEM
Computer: sfbfe04bck.recore.lab
Description:
A fatal error occurred while creating an SSL client credential. The internal error state is 10013.

Log Name: System
Source: Service Control Manager
Date: 16/10/2017 18:35:41
Event ID: 7024
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: sfbfe04bck.recore.lab
Description:
The SQL Server (RTCLOCAL) service terminated with the following service-specific error:
The group or resource is not in the correct state to perform the requested operation.

The error state 10013 is related to Enabled Protocols, we checked the enabled protocols and on this particular server TLS 1.0 was disabled for client and server:

Get-ChildItem -Path “HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0”

To re-enable TLS 1.0, we modified the following registry keys:

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client’ -Name DisabledByDefault -Value ‘0’ -Type Dword
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client’ -Name Enabled -Value ‘1’ -Type Dword

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server’ -Name DisabledByDefault -Value ‘0’ -Type Dword
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server’ -Name Enabled -Value ‘1’ -Type Dword

Note: After enable/disable protocols or cipher suites we need to restart the server.

Because the SQL Server Express installation failed, we also had to remove the RTCLOCAL instance by going to Control Panel > Programs > Programs and Features > Uninstall a program, select the SQL Server 2014 and then Uninstall/Change:

Now we use the option to Remove:

We will be prompted to remove the RTCLOCAL:

And we only need to remove the Database Engine Services:

In Ready to Remove we select Remove and wait for the RTCLOCAL to be removed:

Please also make sure that all the database files (*.mdf and *.ldf) related to the RTCLOCAL were removed:

(Get-ChildItem “C:\Program Files\Microsoft SQL Server\*RTCLOCAL” -Include *.mdf,*.ldf -Recurse).count

Since we remove the RTCLOCAL instance we should restart the server again.

Finally, we should be able to successful run Deployment Wizard Step 1:

Please note that currently it’s not supported to disable TLS 1.0 on any role related to Lync Server 2010/2013 and Skype for Business Server 2015.

As announced at Ignite 2017 the support will be available for Skype for Business Server 2015 in a future update.