Lync Script – Users with Desktop sharing

By | August 23, 2013

I frequent the Lync TechNet forums: http://social.technet.microsoft.com/Forums/en-US/category/lync and was recently asked how one would get a report for all users that have Desktop Sharing enabled.

I took the script from here: http://blogs.technet.com/b/nexthop/archive/2010/06/07/scriptuserpolicyassignments.aspx

Modified it to run for all users, detect only the Conferencing policy and write a line when EnableAppDesktopSharing is equal to Desktop for the user.

Sample output:
Jay Pritchett / Conferencing Policy: Global policy / Sharing: Desktop

Save the following as a ps1 file and run the script from the Lync Management Shell (example C:ScriptsGet-UsersAllowedDesktop.ps1):

$y = @()
 
$userlist = Get-CsUser -ResultSize Unlimited
$x = Get-CsConferencingPolicy 
 
foreach ($user in $userlist)
{
 
if ($user.ConferencingPolicy -eq $Null)
    {
          
        $site = (Get-CsSite | Where-Object {$_.Pools -contains $user.RegistrarPool}).Identity
  
        foreach ($i in $x)
            {$y += ($i.Identity)}
           
                if ($y -contains "$site")
                    {
                    $Desktop = Get-CsConferencingPolicy -identity "$site" | Select -expandproperty EnableAppDesktopSharing 
                    $output = $user.DisplayName + " / Conferencing Policy: site:$site / Sharing: $Desktop"
                    }
                else
                   {
                   $Desktop = Get-CsConferencingPolicy -identity Global | Select -expandproperty EnableAppDesktopSharing
                   $output = $user.DisplayName + " / Conferencing Policy: Global policy / Sharing: $Desktop"
                   }   
    }
else
   {
   $ID = "tag:" + $user.ConferencingPolicy
   $Desktop = Get-CsConferencingPolicy -identity $ID | Select -expandproperty EnableAppDesktopSharing
   $output = $user.DisplayName + " / Conferencing Policy: " + $user.ConferencingPolicy + " / Sharing: $Desktop"
   }
if ($Desktop -eq "Desktop") 
 {$output}
 
$site = $Null
$Desktop = $Null
$output = $Null
}

The bulk of the script is to deal with a user’s Effective Policy because the get-csuser Cmdlet only shows Per-User Polices.

Get-CsUser -Identity Jayp |fl name, *policy

Name : Jay Pritchett
ExchangeArchivingPolicy : Uninitialized
VoicePolicy : CalgaryVoicePolicy
MobilityPolicy : BlockMobilityPolicy
ConferencingPolicy :
PresencePolicy :
VoiceRoutingPolicy :
LocationPolicy :
ClientPolicy :
ClientVersionPolicy :
ArchivingPolicy :
LegalInterceptPolicy :
PinPolicy :
ExternalAccessPolicy : BlockExtenralPolicy
HostedVoicemailPolicy :
PersistentChatPolicy :
UserServicesPolicy : UCSEnabled
ExperiencePolicy :

A rundown of the script.

  1. Grab all Lync users
  2. Individually check if a user has a Per-User Policy assigned, if not then determine if the user’s pool has a Site Policy, if not assume Global Policy is assigned.
  3. Run specific query determined by which type of policy is assigned
  4. Output formatted info
  5. Move to the next user in the list

This script can be easily modified to query different properties and/or policies.

Leave a Comment