Lync/SfB: Check client version using PowerShell

During troubleshooting we often need to check the installed version, for Lync/SfB Server we already know how to check the installed version using PowerShell:

Skype for Business Server Component Version using Get-CsServerPatchVersion
https://blogs.technet.microsoft.com/uclobby/2015/12/08/skype-for-business-server-component-version-using-get-csserverpatchversion/

Skype for Business Server 2015 Component Version using PowerShell
https://blogs.technet.microsoft.com/uclobby/2015/05/01/skype-for-business-server-2015-component-version-using-powershell/

Lync Server Component Version using PowerShell (Windows Registry)
https://blogs.technet.microsoft.com/uclobby/2014/12/15/lync-server-component-version-using-powershell-windows-registry/

On the client we can check the version by using going to Option > Help > About:

However, for the SfB 2016 MSI this is a slightly different since the displayed version is the MSO component and not the SfB client version:

To get the Lync/SfB client version we can simply run the following in PowerShell cmdlet:

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

Skype for Business 2016 MSI

Skype for Business 2016 Click-to-Run

Skype for Business 2015 MSI

Please note that this will work for Lync2013/SfB2015/SfB2016 Click-to-Run or MSI versions.

For Lync 2010 and previous client versions we need to modify from lync.exe to communicator.exe:

(Get-ItemProperty -path “HKLM:\Software\Microsoft\Windows\CurrentVersion\App Paths\communicator.exe”).”(Default)” | ForEach-Object {Get-ChildItem -Path $_ | Select-Object -ExpandProperty VersionInfo | Select FileDescription,ProductVersion} | ft -autosize