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.
- Grab all Lync users
- 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.
- Run specific query determined by which type of policy is assigned
- Output formatted info
- Move to the next user in the list
This script can be easily modified to query different properties and/or policies.