Skype for Business – Detailed User Configuration Report

I am pleased to announce and release a new script tool that will allow administrators to export user configuration details from Skype for Business. The script has 3 modes:

  1. User Mode – where administrators can enter the SIP address of the user they want to report on
  2. Domain Mode = where administrators can report on all users who are a member of a specific SIP domain
  3. Enterprise Mode – where administrators can report on all Skype for Business enabled users

The script will produce HTML based reports for each user that can be accessed by a homepage.

In order to view the configuration settings for a particular user click on the details link

Here you will find details of the user and all associated policies and settings. You can navigate using the links in the navigation bar.

Operational Instructions

  • Launch using Windows PowerShell
  • When prompted, enter the report scope of your choice (i.e., or ALL) and Press Enter
  • Wait for reports to complete
  • Internet Explorer will automatically open the report homepage for you

Installation Instructions

  • Must be on a computer with the Skype for Business Management tools installed
  • User must have at least read-only access to Skype for Business
  • Execution PowerShell Policy must be set to Remote Signed
  • Reports will be written to the c:\ drive of the machine it is run from


Download from TechNet Gallery:


10 thoughts on “Skype for Business – Detailed User Configuration Report

  1. Hi, first Thanks the Script is very cool. I have a Little Problem i become for every Users some Errors.
    Get-CsVoicePolicy : Cannot bind parameter ‘Identity’. Cannot convert the
    “DE-Bochum-HQ-International” value of type
    “Microsoft.Rtc.Management.ADConnect.Collections.UserPolicy” to type
    At C:\Install\userreport_v1.0.ps1:89 char:52
    + $voicepolicy = Get-CsVoicePolicy -Identity $user.VoicePolicy |
    ConvertTo …
    + ~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-CsVoicePolicy], Parame
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Rtc.Man

    Get-CsClientPolicy : Cannot bind parameter ‘Identity’. Cannot convert the
    “UCS” value of type
    “Microsoft.Rtc.Management.ADConnect.Collections.UserPolicy” to type
    At C:\Install\userreport_v1.0.ps1:143 char:54
    + $Clientpolicy = Get-CsClientPolicy -Identity $user.ClientPolicy |
    Conver …
    + ~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-CsClientPolicy], Param
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Rtc.Man

    Get-CsUserServicesPolicy : Cannot bind parameter ‘Identity’. Cannot convert
    the “AllowUnifiedContactStore” value of type
    “Microsoft.Rtc.Management.ADConnect.Collections.UserPolicy” to type
    At C:\Install\userreport_v1.0.ps1:215 char:66
    + $UserServicespolicy = Get-CsUserServicesPolicy -Identity
    $user.UserServi …
    + CategoryInfo : InvalidArgument: (:) [Get-CsUserServicesPolicy],
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Rtc.Man

    When i use the Get-CS than it works, but not in your Script.

    Get-CsUserServicesPolicy -Identity AllowUnifiedContactStore

    Identity : Tag:AllowUnifiedContactStore
    UcsAllowed : True
    MigrationDelayInDays : 0
    EnableAwaySinceIndication : True

    Get-CsVoicePolicy -Identity DE-Bochum-HQ-International

    Identity : Tag:DE-Bochum-HQ-International
    PstnUsages : {DE-Bochum-HQ-Local,
    CustomCallForwardingSimulRingUsages : {}
    Description : Allows local/national/international
    calls from Bochum, Germany

    Generated by Lync Dialing Rule Optimizer
    v.12.5 on 5/23/2015
    Copyright © 2015 Ken Lasko
    You must read and abide by the terms of
    service at
    AllowSimulRing : True
    AllowCallForwarding : True
    AllowPSTNReRouting : True
    Name : DefaultPolicy
    EnableDelegation : True
    EnableTeamCall : True
    EnableCallTransfer : True
    EnableCallPark : True
    EnableMaliciousCallTracing : False
    EnableBWPolicyOverride : True
    PreventPSTNTollBypass : False
    CallForwardingSimulRingUsageType : VoicePolicyUsage
    EnableVoicemailEscapeTimer : False
    PSTNVoicemailEscapeTimer : 4000

    Get-CsClientPolicy -Identity UCS

    Identity : Tag:UCS
    PolicyEntry : {Name=EnablePresencePhotoOptions;
    Description :
    AddressBookAvailability : WebSearchAndFileDownload
    AttendantSafeTransfer :
    AutoDiscoveryRetryInterval :
    BlockConversationFromFederatedContacts :
    CalendarStatePublicationInterval :
    ConferenceIMIdleTimeout :
    CustomizedHelpUrl :
    CustomLinkInErrorMessages :
    CustomStateUrl :
    DGRefreshInterval :
    DisableCalendarPresence :
    DisableContactCardOrganizationTab :
    DisableEmailComparisonCheck :
    DisableEmoticons :
    DisableFeedsTab :
    DisableFederatedPromptDisplayName :
    DisableFreeBusyInfo :
    DisableHandsetOnLockedMachine :
    DisableMeetingSubjectAndLocation :
    DisableHtmlIm :
    DisableInkIM :
    DisableOneNote12Integration :
    DisableOnlineContextualSearch :
    DisablePhonePresence :
    DisablePICPromptDisplayName :
    DisablePoorDeviceWarnings :
    DisablePoorNetworkWarnings :
    DisablePresenceNote :
    DisableRTFIM :
    DisableSavingIM :
    DisplayPhoto : AllPhotos
    EnableAppearOffline : True
    EnableCallLogAutoArchiving : True
    EnableClientMusicOnHold : True
    EnableConversationWindowTabs :
    EnableEnterpriseCustomizedHelp :
    EnableEventLogging :
    EnableExchangeContactSync : True
    EnableExchangeDelegateSync :
    EnableFullScreenVideo :
    EnableHighPerformanceConferencingAppSharing : False
    EnableHotdesking :
    EnableIMAutoArchiving :
    EnableMediaRedirection :
    EnableNotificationForNewSubscribers : True
    EnableServerConversationHistory : True
    EnableSkypeUI : True
    EnableSQMData :
    EnableTracing :
    EnableURL : True
    EnableUnencryptedFileTransfer :
    EnableVOIPCallDefault : False
    ExcludedContactFolders :
    HotdeskingTimeout : 00:05:00
    IMWarning :
    MAPIPollInterval :
    MaximumDGsAllowedInContactList : 10
    MaximumNumberOfContacts :
    MaxPhotoSizeKB : 30
    MusicOnHoldAudioFile :
    P2PAppSharingEncryption : Supported
    EnableHighPerformanceP2PAppSharing : False
    PlayAbbreviatedDialTone :
    SearchPrefixFlags :
    ShowRecentContacts : True
    ShowManagePrivacyRelationships : False
    ShowSharepointPhotoEditLink : False
    SPSearchInternalURL :
    SPSearchExternalURL :
    SPSearchCenterInternalURL :
    SPSearchCenterExternalURL :
    TabURL :
    TracingLevel : Light
    WebServicePollInterval :
    HelpEnvironment :
    RateMyCallDisplayPercentage : 10
    RateMyCallAllowCustomUserFeedback : True
    IMLatencySpinnerDelay : 1500
    IMLatencyErrorThreshold : 1500


    1. Hi. Thanks for alerting me to this issue. I will have a look at it when I get back home, on a deployment at the moment. Please allow a few days for me to get back to you properly


  2. Hi Mark, kam so sorry but with Version 1.1 i became this Errors for tue same 3 Policys:
    Enter user’s SIP address (e.g., or SIP domain (e.g., or type ALL for all users: ALL
    Get-CsVoicePolicy : Cannot bind parameter ‘Identity’. Cannot convert the “DE-Bochum-HQ-International” value of type
    “Microsoft.Rtc.Management.ADConnect.Collections.UserPolicy” to type “Microsoft.Rtc.Management.Xds.XdsIdentity”.
    At C:\Install\userreport_v1.1.ps1:89 char:52
    + $voicepolicy = Get-CsVoicePolicy -Identity $($user.VoicePolicy) | Conver …
    + ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-CsVoicePolicy], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Rtc.Management.Internal.GetVoicePolicyCmdlet

    Get-CsClientPolicy : Cannot bind parameter ‘Identity’. Cannot convert the “UCS” value of type
    “Microsoft.Rtc.Management.ADConnect.Collections.UserPolicy” to type “Microsoft.Rtc.Management.Xds.XdsIdentity”.
    At C:\Install\userreport_v1.1.ps1:143 char:54
    + $Clientpolicy = Get-CsClientPolicy -Identity $($user.ClientPolicy) | Con …
    + ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-CsClientPolicy], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Rtc.Management.Internal.GetClientPolicyCmdlet

    Get-CsUserServicesPolicy : Cannot bind parameter ‘Identity’. Cannot convert the “AllowUnifiedContactStore” value of
    type “Microsoft.Rtc.Management.ADConnect.Collections.UserPolicy” to type “Microsoft.Rtc.Management.Xds.XdsIdentity”.
    At C:\Install\userreport_v1.1.ps1:215 char:66
    + $UserServicespolicy = Get-CsUserServicesPolicy -Identity $($user.UserSer …
    + ~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-CsUserServicesPolicy], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Rtc.Management.Internal.GetUserServicesPolicyCm

    I Hope, you can find tue issue. Thanks a lot.



    1. Hi René,

      Right I think I have nailed it this time. Just ran it against 2000 users on a prod environment and not seen any errors. I have added a log file to it now, so errors will be captured in there. searching the log I can not find any bind errors, so should be good to use now. Updated to version 1.2. Same download link. Apologies, and thank you for being patient.



  3. Hi Mark, thanks so much. This could be really useful. I am trying to modify it so that it can report info for our online-only users. Tried changing instances of Get-CsUser to Get-CsolUser. No errors, but no results, either. Web page has headers, but no users listed.


    1. Hi

      The script only handles on prem users. For online, due to the way SfBO is built the trace backs are different commands. Simply changing the Get-CsUser will not be enough.



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s