Archive

Archive for the ‘Lync Server/Skype for Business Server’ Category

October 2011 Technical Rollup: Unified Communications

October 10th, 2011 No comments

News

Antigen & Forefront

http://blogs.technet.com/forefront

http://blogs.technet.com/fssnerds

Exchange

http://msexchangeteam.com/default.aspx

http://blogs.technet.com/msukucc

Hosted Messaging Collaboration

Office Communication Server & Live Meeting

http://communicationsserverteam.com

http://communicatorteam.com

Outlook

http://blogs.msdn.com/outlook/default.aspx

Other

http://technet.microsoft.com/office/ocs/ee465814.aspx
http://blogs.technet.com/themasterblog

New KBs

Antigen & Forefront

Microsoft Antigen 9.0 for Exchange

  1. 923869 Event ID 100 is logged in the Application log when you perform an MTA scan job in Antigen 9.0 for Exchange
  2. 924008 An outgoing e-mail message that includes disclaimer text causes the AntigenInternet.exe process to stop responding in Antigen 9.0 for Exchange
  3. 924705 The update operation times out when you try to update Antigen 9.0 for Exchange scan engines
  4. 928081 Antigen 9.0 for Exchange or Antigen 9.0 for SMTP Gateways incorrectly detects a uuencode file as a virus
  5. 928082 Size of SMTP messages may increase during the scanning process in Antigen
  6. 928807 The Antigen Service randomly exits, and event ID 7031 is logged on a computer that is running Antigen 9.0 for Exchange or Antigen 9.0 for SMTP Gateways
  7. 930360 Antigen 9.0 signatures are not updated when you try to update signatures by using Antigen Enterprise Manager
  8. 933639 Antigen 9.0 cannot retrieve scan jobs, and e-mail messages begin to queue up in an active/passive cluster environment
  9. 933675 No items appear in the Antigen Quarantine and no entries are logged in the Incidents panel when you run Antigen 9.0
  10. 938100 A “ConvertLegacyExchangeDNToSMTPAddress – GetFirstRow failed. Error code: 8007203E” entry may be logged when Antigen 9.0 is installed on an Exchange server

Microsoft Forefront Online Protection for Exchange

  1. 2604282 The Junk E-mail Reporting Tool does not appear in Outlook

Exchange

Microsoft Exchange Server 2003 Enterprise Edition

  1. 277872 XCON: Connector Delivery Restrictions May Not Work Correctly
  2. 317471 “Access Denied” Error Message When You Try to Use Outlook Web Access
  3. 324358 Exchange Server 2003 and Exchange 2000 Server information store maintenance and online defragmentation
  4. 818486 XCCC: “Server Error in ‘/OMA’ Application” Error Message When You View the Outlook Mobile Access Web Site
  5. 822449 Error c1041724 Occurs When You Try to Mount a Database on an Exchange 2003 Server
  6. 912939 A software update for the Safe HTML filtering feature is available to enable you to use the POST method in HTML forms in Outlook Web Access for Exchange Server 2003
  7. 916989 After you configure the Jerusalem time zone settings to match the transition dates for daylight saving time, meetings are moved ahead by one hour when a user accepts a meeting request by using a CDO program in Exchange Server 2003

Microsoft Exchange Server 2003 Standard Edition

  1. 328737 How to set up a migration server for Novell GroupWise and Exchange Server 2003 or Exchange 2000 Server
  2. 818222 Messages remain in an outbound queue until a non-delivery report is generated when you send e-mail to a remote domain
  3. 873393 A user receives an NDR that contains a 5.2.1 status code when the user tries to send an e-mail message to a public folder in Exchange Server 2003
  4. 908496 Event ID 9320 is logged when you generate an offline address book on a server that is running Exchange Server 2003 Service Pack 2
  5. 909546 Mail flow stops when you install the Microsoft POP3 Service on a server that is running Exchange Server 2003
  6. 916160 Exchange Server 2003 update rollup for Process Flow Documentation

Microsoft Exchange Server 2007 Enterprise Edition

  1. 280823 Troubleshooting OWA when the contents frame displays “Loading”
  2. 320202 How to remove and to reinstall IIS on a computer that is running Exchange Server
  3. 949536 PowerShell commands for the Exchange 2007 Edge server role do not work as expected after you uninstall an update rollup or an interim update on the Edge server
  4. 982351 Custom Address Lists are not shown in the GAL in Microsoft Office Outlook

Microsoft Exchange Server 2007 Service Pack 3

  1. 2536652 EdgeTransport.exe randomly stops responding on a Hub Transport server after you configure public folder replication in Exchange Server 2007
  2. 2536697 DBCS characters in a rule name are converted to question marks after you move a mailbox from Exchange Server 2003 to Exchange Server 2007
  3. 2537783 The EdgeTransport.exe process crashes occasionally after you install Update Rollup 2 for Exchange Server 2007 SP3
  4. 2554575 Items accumulate in the MRM submission folder when managed folder assistant journal items in an Exchange Server 2007 environment
  5. 2557304 The Store.exe process may consume excessive CPU resources and memory resources intermittently when a user opens a calendar item by using OWA in an Exchange Server 2007 SP3 environment
  6. 981820 New X-headers of a message item do not appear when the message item is retrieved by IMAP4 or by POP3 in an Exchange Server 2007 SP2 environment

Microsoft Exchange Server 2007 Standard Edition

  1. 944516 How to register Filter Pack IFilters with Exchange Server 2007
  2. 951291 Mail flow to certain domains does not work when you run Exchange Server 2007 on a Windows Server 2008-based computer

Microsoft Exchange Server 2010 Coexistence

  1. 979694 Error message when you import a third-party certificate into Exchange Server 2010: “The certificate status could not be determined because the revocation check failed”
  2. 982349 “Changes to the distribution list membership cannot be saved” error message when you try to remove members from an Exchange Server 2010 distribution list
  3. 982679 Event ID 106 is logged when you start the RPC Client Access service on Exchange Server 2010

Microsoft Exchange Server 2010 Enterprise

  1. 2603670 Services Required for the Microsoft Exchange Server Are Not Started
  2. 2616505 Data is Lost During Restore due to Circular Logging Being Enabled
  3. 2617438 Exchange 2010 Hub Transport Server Not Present
  4. 2617804 Microsoft Exchange Server 2010 DAG member remains in Maintenance Mode
  5. 2617816 A Microsoft Exchange 2010 Server Certificate has expired or will expire soon
  6. 982678 You cannot open your mailbox on an Exchange Server 2010 server by using Outlook

Microsoft Exchange Server 2010 Standard

  1. 2605522 Debug Tracing is Enabled

Hosted Messaging Collaboration

Microsoft Solution for Hosted Messaging and Collaboration 4.5

  1. 957582 Description of the tool to deny Send As permissions and Receive As permissions for administrators in Microsoft Solution for Hosted Messaging and Collaboration 4.5

Office Communication Server & LiveMeeting

Microsoft Office Communications Server 2007 Enterprise Edition

  1. 941095 Error message when you run the Communications Server 2007 Validation Wizard to validate the Web Components Server: “Received a failure HTTP response.: HTTP Response: 401 Unauthorized”

Microsoft Office Communications Server 2007 R2 Enterprise Edition

  1. 982020 Office Communications Server 2007 R2, OCS 2007 or LCS 2005 does not work correctly after you upgrade Domain Controllers to Windows Server 2008 R2

Microsoft Office Communications Server 2007 R2 Group Chat

  1. 2582186 You do not receive a toast notification and a new message indicator of a chat room in an Office Communications Server 2007 R2, Group Chat client
  2. 2590693 Update package for the Office Communications Server 2007 R2 Group Chat server: September, 2011
  3. 2590694 Description of the update for the Office Communications Server 2007 R2 Group Chat Administration Tool: September, 2011

Microsoft Office Communications Server 2007 R2 Group Chat client

  1. 2587212 The font and font size of a story is incorrect in an Office Communications Server 2007 R2, Group Chat client
  2. 2607777 Description of the update for the Office Communications Server 2007 R2 Group Chat client: September, 2011

Microsoft Office Communications Server 2007 R2 Standard Edition

  1. 2590692 Description of the cumulative update for Office Communications Server 2007 R2 Attendant: September 2011
  2. 2590698 Description of cumulative update for Office Communications Server 2007 R2: September 2011
  3. 2603285 Description of the cumulative update package for Office Communications Server 2007 R2, Application Sharing Server: September 2011
  4. 2603287 Description of the cumulative update package for Office Communications Server 2007 R2, Communicator Web Access: September 2011
  5. 2603289 Description of the cumulative update for Office Communications Server 2007 R2, Core Components: September 2011
  6. 2603291 Description of the cumulative update for Office Communications Server 2007 R2, Web Conferencing Server: September 2011

Microsoft Office Communicator 2007 R2

  1. 2622381 Microsoft Conferencing Add-In or Microsoft Outlook Schedule a Conference feature fails

Microsoft Office Live Communications Server 2005 Enterprise Edition

  1. 890295 Windows NetMeeting unexpectedly quits after you accept a Whiteboard session in Windows Messenger

Microsoft Office Live Meeting 2005

  1. 894636 How to create a scheduled meeting in Live Meeting 2005
  2. 894637 How to register to become a Live Meeting organizer in Live Meeting 2005
  3. 894638 How to enable a feature so that your users can register themselves as meeting organizers in Live Meeting 2005
  4. 894639 How billing charges apply to a pay-per-use account in Live Meeting 2005
  5. 894640 How to download a recording of a meeting in Live Meeting 2005
  6. 894641 How to use Snapshot slides to improve the graphic quality of uploaded PowerPoint slides in a Live Meeting 2005 session
  7. 894644 How to improve performance in Live Meeting 2005
  8. 894647 How to determine whether you have sufficient rights to install Live Meeting 2005 programs
  9. 894650 A presenter cannot record a meeting in Live Meeting 2005
  10. 894651 How to request that your Organizer password be reset in Live Meeting 2005
  11. 894654 Large black blocks appear in a shared Virtual PC session in Live Meeting 2005
  12. 894655 Attendees may have to scroll to see the whole shared screen in Live Meeting 2005
  13. 894656 You receive the “Unable to Initialize Console” error message when you try to log on to a Live Meeting 2005 meeting
  14. 894657 The Windows-based meeting console does not start when you try to join a meeting in Live Meeting 2005
  15. 894658 Attendees may see a black screen when you share a program as a presenter in Live Meeting 2005
  16. 894659 The Java-based meeting console does not start when you try to join a meeting in Live Meeting 2005 by using a Macintosh computer
  17. 894660 How to set Live Meeting 2005 to prompt each attendee for his or her e-mail address and company name when attendees join a meeting
  18. 894661 How to download codecs to your computer so that you can view a meeting that was recorded in Microsoft Office Live Meeting 2005
  19. 894662 How to delete a recording in Live Meeting 2005
  20. 896380 How to set Live Meeting 2005 to use the Call Me feature and how to specify the telephone number at which you want to be called
  21. 896382 How to use the Call Me feature to join a meeting in Live Meeting 2005
  22. 896383 When a meeting organizer invites you to attend a meeting in Live Meeting 2005, you do not receive the meeting invitation, or the meeting invitation is received as junk e-mail
  23. 896384 You receive a “McAfee VirusScan detects \\Powerpnt.exe contains suspicious scripting activity” warning message when you upload PowerPoint 2003 slides to Live Meeting 2005
  24. 944648 Live Meeting 2005 and Live Meeting 2003 may not run correctly if you use the Data Execution Prevention feature

Microsoft Office Live Meeting 2007

  1. 2606369 “Live meeting service has encountered internal errors during recording” error message when you try to record a meeting in Live Meeting

Outlook

Microsoft Office Outlook 2003

  1. 246153 How can I recover items that I have “hard deleted” in Outlook?
  2. 254343 How to change the idle time processing values in Outlook
  3. 272151 How to delete all Outlook Calendar items in Outlook 2002 and in Outlook 2003
  4. 817883 Information About the Safe Senders Option in Outlook
  5. 818851 How to tell the difference between field names in an Outlook contact list and in a Word mail merge
  6. 820930 “Installation source has been corrupted” error message when you install Office 2003
  7. 821550 How to change the company name and user name in Office 2003
  8. 822518 You cannot preview or insert images correctly when you use Web Collections to search the Internet for clip art thumbnails in Office
  9. 824103 E-mail message ToolTip does not appear correctly in Outlook 2003
  10. 826491 Outlook files remain on the hard disk after you remove Outlook 2003 or Outlook 2007
  11. 826809 Description and use of the Save My Settings Wizard
  12. 829072 How to disable hyperlink warning messages in Office 2003
  13. 829982 You may receive an “Outlook blocked access to the following potentially unsafe attachments” message in Outlook
  14. 831060 You cannot connect over the Internet to Exchange Server 2003 from Outlook 2007 or from Outlook 2003
  15. 831398 Description of the Expand List feature in Outlook 2003
  16. 832925 How to configure the size limit for both (.pst) and (.ost) files in Outlook 2010, Outlook 2007, and in Outlook 2003
  17. 836755 How to set the location of an archive .pst file in Outlook
  18. 842784 You cannot deploy Unicode .pst files when you use the Custom Installation Wizard from the Office 2003 Resource Kit
  19. 873212 Attendees can still use the Propose New Time feature in your meeting requests if you use the Group Policy editor to disable the Propose New Time feature in Outlook
  20. 873301 You receive a “Error 1327. Invalid Drive… ” error message when you install Office 2003
  21. 873362 Description of the Outlook 2003 Junk E-mail Filter update: November 9, 2004
  22. 883401 How to change the default location that Outlook 2003 or Outlook 2002 uses to create or to open a personal folders (.pst) file
  23. 889692 Your changes to the registry values for the Safe Senders list do not appear in the Safe Senders list in Outlook 2002 and in Outlook 2003
  24. 889694 How to change the Send/Receive settings and the frequency that the Outlook Connector for MSN synchronizes in Outlook 2002 and Outlook 2003
  25. 890391 You receive an “Error 1926” error message when you try to install Office on your Windows XP-based computer or on your Windows 2000-based computer
  26. 892447 You cannot copy or move a folder between an Exchange mailbox and a Hotmail mailbox in Outlook
  27. 892456 The Outlook Connector for MSN is not compatible with the Franklin Covey Plan Plus program
  28. 892457 The Outlook Connector is not compatible with Nelson Email Organizer
  29. 892764 Description of the support process for issues that are related to the “Outlook is retrieving data” message in Outlook 2002 and Outlook 2003
  30. 895091 How to verify the Intelligent Message Filter SCL rating in Outlook 2003 and Outlook 2007
  31. 895276 When you use Outlook to connect to your Exchange server mailbox by using RPC over HTTP, you receive messages that continuously prompt you for your network password
  32. 896301 You receive a “Installation Error: File not Found” error message when you try to convert the Office 2003 trial program to the full product version of Office 2003
  33. 921927 How to prevent users from downloading the Offline Address Book without disabling Cached Exchange Mode
  34. 923333 Recurring events are incorrectly displayed as all-day events in the Outlook 2003 calendar
  35. 924159 The body of an e-mail message may appear to be blank when you open the message in Outlook 2003
  36. 927092 The size of a digitally signed and encrypted e-mail message grows when you create, forward, or reply to a digitally signed and encrypted e-mail message in Outlook or in Outlook Express
  37. 933450 Outlook 2003 is incorrectly configured as the default mail client every time that you perform an Office installation or Office update that modifies Outlook
  38. 938816 Error messages when you create a new MAPI form or you try to open custom forms in Outlook 2003

Microsoft Office Outlook 2003 with Business Contact Manager

  1. 828244 History or Opportunities are not exported from Business Contact Manager in Outlook
  2. 829748 You cannot add an Exchange e-mail account to a profile that already contains a Business Contact Manager in Outlook 2003
  3. 830318 You receive an error message when you install outlook with Business Contact Manager 2003
  4. 839685 ActiveSync may disable Business Contact Manager

Microsoft Office Outlook 2007

  1. 171440 Where to acquire the CDO Libraries (all versions)
  2. 195671 Non-delivery notification “Your message did not reach some or all of the intended recipients” sending e-mail to contacts
  3. 196748 How to use Telnet to test an Internet Mail Connection
  4. 236032 Outlook Express and Outlook repeatedly prompt you for your password when you check messages on an Exchange Server-based computer
  5. 251340 How to start Outlook in a minimized state
  6. 258256 How to create an E-mail Message template or an E-mail Message form in Outlook
  7. 278168 You cannot import or export e-mail accounts with .IAF files in Outlook
  8. 284292 How to create a distribution list from your contacts in Outlook
  9. 286040 How to troubleshoot Outlook when you cannot send or receive e-mail
  10. 286197 How to configure Outlook to receive e-mail messages from an IMAP server
  11. 287073 How to upgrade from Outlook Express to Outlook
  12. 287563 Contact information does not appear in the address book in Outlook
  13. 289987 How to compact PST and OST files to eliminate deleted item space in Outlook
  14. 291626 How to manage multiple Exchange mailbox accounts in Outlook
  15. 291627 How to manage a .pst file for two different computers in Outlook
  16. 291636 How to move your personal folders (.pst) file in Outlook
  17. 298838 You receive an “Outlook failed to start correctly last time” error message when you start Outlook
  18. 299349 How to remove duplicate imported items in Outlook
  19. 311107 How to emulate the Out of Office Assistant in Microsoft Outlook
  20. 312336 E-mail messages are not automatically sent or received at startup in Outlook
  21. 813602 You receive an error message if a file conflicts with the MAPI file on your computer when you start Outlook 2007 or Outlook 2003
  22. 824122 You receive a “Cannot Start Microsoft Outlook” message, and you cannot open a saved message (.msg) file in Outlook
  23. 826265 Rules may become corrupted when you access them from multiple versions of Outlook
  24. 829985 Error message when you try to import or to export files in Outlook: “Microsoft Outlook cannot start the required translator”
  25. 830336 The .pst file has a different format and folder size limit in Outlook 2007 and in Outlook 2003
  26. 831055 How to use Meeting Workspace in Outlook
  27. 831058 You cannot add offline folder (.ost) files to Exchange Server profiles in Outlook 2007 and in Outlook 2003
  28. 831402 How to troubleshoot Search Folders in Outlook 2010, Outlook 2007, and Outlook 2003
  29. 872976 How to obtain the latest Outlook Junk E-mail Filter update
  30. 913843 Error messages when you try to connect Outlook 2007 to Exchange Server: “The action cannot be completed” or “Your Microsoft Exchange Server is unavailable” or “Cannot start Microsoft Office Outlook”
  31. 920278 Custom SharePoint task list columns may not appear in Outlook 2007
  32. 924625 When you use Outlook with an Exchange 2007 mailbox, you cannot connect to Exchange 2007, and you receive an error message
  33. 927481 Error message when you start Outlook 2007 to configure an Exchange 2003 mailbox if the AutoDiscover\’ZeroConfigExchange’ policy is set: “The connection to Microsoft Exchange is unavailable”
  34. 929012 After you upgrade Outlook 2003 to Outlook 2007, Outlook 2007 crashes when you start the program
  35. 935400 It takes much longer than expected to download an e-mail message from a POP3 server in Outlook 2007 or in Outlook 2010
  36. 937349 Error message when you try to synchronize a Windows Live Hotmail account in Outlook 2007 or in Outlook 2003: “Error 3212. Unable to connect” or “Error 4101. Unable to connect”
  37. 943359 When you try to configure the Outlook 2007 AutoDiscover service to use a remote domain, you may receive a certificate mismatch error
  38. 943649 Error message when you try to use Outlook 2007 or Outlook 2003 to access a Windows Live Hotmail account: “Task ‘http://services.msn-: Folder:Inbox Synchronizing headers.’ reported error (0x800CCCF7)”
  39. 951648 The Outlook Add-in for Project Server 2007 no longer loads when you uninstall and then reinstall the add-in
  40. 972362 Irregular Start and End Times are not displayed on appointments when printing the Calendar using Daily Style

Microsoft Office Outlook Connector

  1. 834459 How to create a log file for Office Outlook Connector
  2. 889415 Disabled COM add-ins affect the functionality of Outlook Connector
  3. 889697 The Microsoft Office Outlook Connector does not appear to connect, and it does not synchronize your e-mail account in Outlook
  4. 889698 When you view a calendar in Outlook, the free or busy information may not appear
  5. 892452 A meeting request is not canceled in your Hotmail or MSN calendar when you delete the meeting in Outlook 2002 or in Outlook 2003
  6. 892453 The attendee list replication process when you move a meeting request from Exchange to Hotmail or to MSN in Outlook 2002 and in Outlook 2003
  7. 892458 A graphic or an object is missing from the body of a message that is sent from Outlook 2003
  8. 892459 You cannot open a mail folder or access a calendar that belongs to another user account if you are using the Office Outlook Connector in Outlook 2002
  9. 892460 Nothing happens when you try to propose a new time for a meeting or an appointment in your Hotmail or MSN calendar in Outlook 2002 or in Outlook 2003
  10. 892461 Reminders for items in your Hotmail or MSN calendar do not occur in Outlook 2002 or in Outlook 2003
  11. 898848 E-mail addresses have been deleted from the Safe Senders tab, from the Safe Recipients tab, and from the Blocked Senders tab in Outlook 2003
  12. 898849 When you make a change to the Junk E-mail Filter list, this change is not replicated to the Web-based e-mail server
  13. 898851 The Outlook Junk E-mail Filter settings are not synchronized with the Junk E-mail Filter level settings on the Hotmail e-mail server
  14. 898854 Outlook 2003 and Outlook 2002 stop responding when you add a new Outlook Connector account in a profile
  15. 898855 When you try to synchronize your Palm Pilot with the Microsoft Office Outlook Connector, Microsoft Outlook items are not synchronized, and you receive an error message
  16. 941198 Error message when you try to synchronize Outlook to a Windows Live Hotmail account: “Error with Send/Receive”

Microsoft Outlook 2000 Standard Edition

  1. 198185 OL2000: (IMO) Kernel32.dll Error Checking Mail with IBM Dialer
  2. 202276 OL2000: Error Received When You Import or Export Files
  3. 243989 OL2000: Melissa.U Macro Virus Alert
  4. 295664 How to import contacts into Outlook from Excel
  5. 810939 SBC Yahoo! Internet Service Provider Software Update Causes Error Message in Outlook
  6. 820672 You receive an error message when you try to send or receive messages in Outlook 2000
  7. 832562 You cannot delete e-mail messages from your Inbox in Outlook 2000
  8. 837388 How to configure Outlook to block additional attachment file name extensions

Microsoft Outlook 2002 Standard Edition

  1. 280893 OL2002: Trying to Open Attendee’s Calendar Generates Error Message
  2. 810932 You cannot install the Personal Folders Backup add-in for Outlook 2000 or for Outlook 2002
  3. 813518 Error message when you view a POP3 e-mail account with antivirus software installed: The operation timed out waiting for a response from the receiving (POP) server 0x8004210a
  4. 823662 “Outlook does not Recognize One or More Names” Error Message When You Send an E-mail Message
  5. 823673 You receive an “Unknown error 0x80040154” error message when you click Send/Receive in Outlook 2002
  6. 829168 Outlook 2002 does not automatically send or receive e-mail messages when you start Outlook 2002
  7. 832566 You receive the “an unknown error has occurred” error message (0x800ccc1a) when you send or you receive e-mail message in Outlook
  8. 884671 Information about the new flag in the PR_STORE_SUPPORT_MASK property that indicates support for Unicode in Outlook
  9. 889699 The location of the Microsoft Office Outlook Connector status bar changes when you restart Outlook

Microsoft Outlook 2010

  1. 2606009 To send and receive in Outlook 2010 and “removed some synchronization failed. 0-130 “Error may occur
  2. 287816 Line breaks are removed in posts made in plain text format in Outlook

One Liners: Setting Recovery Option to ‘restart’ for Lync/Skype4B Services

October 5th, 2011 3 comments

Lync 2013 logo 128x128A client wanted to configure the recovery options for services in Lync to help reduce downtime if/when a service stops. This was no big deal for me, except there are a dozen Lync servers, some of which have quite a few Lync services. I set out to make this easier than manually changing each service’s recovery options.

Service recovery options allow you to define what Windows should do if the service fails. The options are “Take No Action” (the default), “Restart the Service”, “Run a Program”, and “Restart the Computer”. These options can be defined for the first, second, and subsequent service failures. Additional parameters include how long to wait before resetting the failure counter and how long to wait after the service fails before performing the configured failure option. More complex options include running another program:

Default service recovery options before running sc.exe

Default service recovery options before running sc.exe

Unfortunately, PowerShell’s Set-Service doesn’t have a parameter for setting failure options, so we must rely on the command line sc.exe. Sc.exe can be used to create, modify, and delete services. We’ll use this to set our failure options to restart the services. Note: you must use “sc.exe” and not just “sc”, since in PowerShell, “sc” is an alias for Set-Content. The format is

sc.exe [service name] failure reset= [integer] actions= [actions]

Reset is measured in seconds. We’ll use 86400, which is a full 24 hours. Actions are specified as action/wait time in milliseconds. So “restart/5000” means to wait 5000 milliseconds (5 seconds), and then restart the service. The same action will be applied to the first, second, and subsequent service failure.

We’ll use Get-CimInstance with the Win32_Service classname to grab a list of all of the services, piping that to match descriptions that include ‘Lync’ or ‘Skype for Business’, and start modes that are “automatic”. The finished one liner command looks like this:

$services = Get-CimInstance -ClassName 'Win32_Service' | Where-Object {$_.description -imatch 'Lync|Skype for Business' -and $_.StartMode -eq 'Auto'}; foreach ($service in $services){sc.exe failure $service.name reset= 86400 actions= restart/5000}
Recovery options changed

Recovery options changed (click to enlarge)

When we view the properties of the service again, we see that the failure options are set to restart the service, and to reset the counter after 1 day. Since the restart option is only 5 seconds, the “Restart service after” field shows 0 minutes:

Service recovery options after running sc.exe

Service recovery options after running sc.exe

You can also specify different actions for each of the failure instances by adding more actions. For instance, let’s say you want to restart the service for the first and second failures, and reboot the server on subsequent failures. Simply combine the actions together, separating them with a slash, such as:

$services = Get-CimInstance -ClassName 'Win32_Service' | Where-Object {$_.description -imatch 'Lync|Skype for Business' -and $_.StartMode -eq 'Auto'}; foreach ($service in $services){sc.exe failure $service.name reset= 86400 actions= restart/5000/restart/5000/reboot/5000}

It might be wise to not set all of the failure instances to taking action, to prevent the server from getting stuck in a loop of taking action when a service is having serious issues. To only set the first two options, just use a double slash for the third, such as:

$services = Get-CimInstance -ClassName 'Win32_Service' | Where-Object {$_.description -imatch 'Lync|Skype for Business' -and $_.StartMode -eq 'Auto'}; foreach ($service in $services){sc.exe failure $service.name reset= 86400 actions= restart/5000/restart/5000//}

Obviously, a good monitoring solution such as System Center Operations Manager (SCOM) should be used to track and alert when services stop, and when other more serious issues arise. You don’t want to get into a scenario where a service is constantly stopping and being restarted without knowing.

Exchange and Lync Session Videos From Tech·Ed 2011

September 29th, 2011 No comments

One Liners: Finding Out Which Lync Pool Servers a User is Associated With, and the Preferred Connection Order

August 31st, 2011 2 comments

Lync 2013 logo 128x128Sometimes, you need to do some Lync logging to investigate a problem with a user. If you have multiple servers in a pool, you sometimes have to enable logging on each until you figure out which one the client is actually connecting to. We can find out which servers the user is associated with and the preferred order that the client will connect using the following in the Lync Management Shell:

Get-CsUserPoolInfo

Such as:

Get-CsUserPoolInfo sip:prichard@contoso.com

The output shows us the primary and backup pool FQDNs, and the order in which it will connect to servers in each pool.

PrimaryPoolFqdn                     : lyncpool01.contoso.local
BackupPoolFqdn                      : lyncpool02.contoso.local
UserServicesPoolFqdn                : lyncpool01.contoso.local
PrimaryPoolMachinesInPreferredOrder : {1:2-2, 1:2-1}
BackupPoolMachinesInPreferredOrder  : {1:3-2, 1:3-1}

But what that doesn’t tell us, is the actual names of the servers in the pool, and which one is 1:2-2, and 1:2-1, etc. So we expand a little further and use:

Get-CsUserPoolInfo -Identity "user" | Select-Object -ExpandProperty PrimaryPoolMachinesInPreferredOrder

For example,

Get-CsUserPoolInfo -Identity "prichard" | Select-Object -ExpandProperty PrimaryPoolMachinesInPreferredOrder

This will show the registrar pools and their respective servers in the preferred order the user will connect:

MachineId         : 1:2-2
Cluster           : 1:2
Fqdn              : lyncpoolserver03.contoso.local
PrimaryMacAddress : 000000
Topology          : Microsoft.Rtc.Management.Deploy.Internal.DefaultTopology
MachineId         : 1:2-1
Cluster           : 1:2
Fqdn              : lyncpoolserver02.contoso.local
PrimaryMacAddress : 000000
Topology          : Microsoft.Rtc.Management.Deploy.Internal.DefaultTopology

We see that this user will connect to lyncpoolserver03 first, since it’s listed first. If that server is not available, then the user would be redirected to lyncpoolserver02. Note that this only shows the information for the primary pool. If you have a backup pool, the information for those servers is not shown here (but is shown if you use BackupPoolMachinesInPrefferedOrder as the ExpandedPropery). However, if you do have a backup registrar pool, and want to use it as a backup pool for users homed on the first, you should have Director servers, as mentioned in Another Reason to Include a Director in Your Lync Server 2010 Deployment.

We can then wrap this in a function:

function Get-CsUserConnectionInfo {
 param (
  [parameter(ValueFromPipeline, ValueFromPipelineByPropertyName, Mandatory, HelpMessage = "No username specified")]
  [ValidateNotNullOrEmpty()]
  [string] $user
 )
 Get-CsUserPoolInfo –Identity $user | Select-Object –ExpandProperty PrimaryPoolMachinesInPreferredOrder
} # end function Get-CsUserConnectionInfo

For easy access. Toss it into your PowerShell profile and access it using

Get-CsUserConnectionInfo

Also, the Get-CsConnections.ps1 script will show you the current connections on a per-user basis if needed.

Script: Get-CsConnections.ps1 – See User Connections, Client Versions, Load Balancing in Lync & Skype for Business Server

August 11th, 2011 200 comments

Lync 2013 logo 128x128Tracy A. Cerise and Mahmoud Badran came up with a script to show Lync connections, and the users connected. This was quite informative as it could be used to show load balance distribution, client versions being used, and more.

I took the script and updated it a little, including:

  1. Removed the help function and the header block and inserted comment based help. So a user can run get-help Get-CsConnections.ps1 and get the help, just like any other script and cmdlet.
  2. Added a parameter to display the user list. My needs didn’t require the user list – just the statistics at the beginning. So I added the feature to show the user list by running Get-CsConnections.ps1 -IncludeUsers.
  3. Added a couple of functions, including one that cleans up some variables when exiting.
  4. Adjusted some of the formatting. I noticed things didn’t always line up when the server FQDNs were really long, like those in child domains.
  5. Did a prereq check to verify the Lync module is loaded. If not, it gets loaded. That way, the script will still run fine if it’s run from an ordinary PowerShell console.
  6. Accounted for the pool parameter being just a NetBIOS name by adding the $env:userdnsdomain to the NetBIOS name to create the FQDN. This appears to work fine if the Lync servers and user running the script are both in the same domain. If not, then an FQDN would be required.
  7. Renamed the script to Get-CsConnections.ps1 and some of the functions to the normal verb-noun format.
  8. Added a feature to show just a specific client version number, and the users connected with that client version. This can help you determine who is connecting with what versions, which is helpful when looking into licensing, upgrades, etc.
  9. Added support for Lync Server 2013, which uses a different query than Lync Server 2010.
  10. Tons more info in updates and releases following that. See the changelog for more info.

Syntax

Get-CsConnections.ps1 [[-Pool] ] [[-SIPAddress] ] [[-FilePath] ] [-IncludeUsers] [-IncludeHighUsers] [-IncludeSystem] [[-UserHighConnectionFlag] ] [[-ClientVersion] ] [-ShowFullClient] [ShowTotal] [[-Server] ] [-WhatIf] [-Confirm] []

Run the script specifying the front end pool or server to target:

Get-CsConnections.ps1 -Pool [pool FQDN]

or

Get-CsConnections.ps1 -Server [server FQDN]

The script automatically determines the version (2010 or 2013) of the pool, and uses the correct query.

If I can find an auto-detect method for server versions, I’ll include that in a later build.

Will show you unique client versions, their user agent, and the number of connections for each:

Current connected users listed by client name/version

Current connected users listed by client name/version

Distribution of connections across frontend servers (load balancing):

Connections by server (load balancing)

Connections by server (load balancing)

The number of unique users and clients connected:

Total unique users and clients

Total unique users and clients

And, adding the -IncludeUsers switch, such as:

Get-CsConnections.ps1 -Pool [pool FQDN] -IncludeUsers

will also show the users who are connected, and the number of connections they each have:

Connections per user

Connections per user

Using -IncludeHighUsers instead of -IncludeUsers will only list those users who meet the UserHighConnectionFlag (shown in white) or exceed the UserHighConnectionFlag (shown in red).

Get-CsConnections.ps1 -SipAddress [sip address] -Pool [pool FQDN]

Will show you the information for a single user:

Connection info for a specific user

Connection info for a specific user

Get-CsConnections.ps1 -Pool [pool FQDN] -ClientVersion [version number]

Will show the connection data for just that version number, including listing the users connected with that client version. This is helpful if the first method lists some version numbers you’d like to track down. Here, I used a client version of 13.1. MC/13.1.x is the OCS client on the Mac.

Connections by client version

Connections by client version

Using the -ShowFullClient option will show extended info for client name/version. However, the previous ‘Client Version’ column is not shown due to formatting restrictions. Here we can see more info, especially about mobile devices, Lync Phone Edition, and Mac clients.

Show Full Client extended info

Show Full Client extended info

Using -ShowTotal will also add additional info to the bottom section, including total number of users who are Lync enabled, total who are voice enabled, and percentage of total Lync enabled users who are connected.

ShowTotal option with totals and percentage

ShowTotal option with totals and percentage

You can export the info to a .csv file for viewing/manipulation in Excel using:

Get-CsConnections.ps1 -Pool [pool FQDN] -FilePath [path to csv file]

Installation

Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.

NOTE: In order to gain remote access to each Front End server’s RTCLOCAL database where connection information is found, you need to open two local firewall ports; one static UDP port (1434), and one dynamic TCP port. We can use netsh to open the two required ports. First, open an elevated command prompt, and paste the following line. You should get “Ok.” in return:

netsh advfirewall firewall add rule name="SQL Browser (UDP 1434)" dir=in action=allow protocol=UDP localport=1434 profile=domain description="Created for Get-CsConnections.ps1. For more information, see https://www.ucunleashed.com/269"

Next, find the dynamically assigned port used by the Named Instance (RTCLOCAL):

  • On the Front End server, open SQL Server Configuration Manager.
  • Expand SQL Server Network Configuration.
  • Click on Protocols for RTCLOCAL.
  • On the right side, right click on TCP/IP, and choose Properties.
  • Click on the IP Addresses tab.
  • Scroll to the last section, called IPAll.
  • Note the TCP Dynamic Ports value

IPAll

Replace [dynamic port] in the code below with the dynamic port number, and run the entire following command:

netsh advfirewall firewall add rule name="SQL RTCLOCAL Dynamic Port (tcp-in)" dir=in action=allow protocol=TCP localport=[dynamic port] profile=domain description="Created for Get-CsConnections.ps1. For more information, see https://www.ucunleashed.com/269"

If you look at the inbound rules for the firewall, you’ll now see the two new rules:

fwrules

Repeat the process for both ports on each Front End server.

Note: The dynamically assigned port is unique to each Front End server, not the pool. So you’ll need find the value on each server. Once the two ports are open on each Front End server in the pool, the script should work fine.

Thanks to James Cussen for explaining what config is needed for SQL access through the firewall.

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Download

v3.5 – 08-14-2019 – Get-CsConnections.v3.5.zip

v3.4 – 03-27-2018 – Get-CsConnections.v3.4.zip

v3.3 – 01-0-2017 – Get-CsConnections.v3.3.zip

v3.2 – 11-17-2016 – Get-CsConnections.v3.2.zip

v3.1 – 04-07-2016 – Get-CsConnections.v3.1.zip

v3.0 – 09-09-2015 – Get-CsConnections.v3.0.zip

v2.9 – 10-28-2014 – Get-CsConnections.v2.9.zip

v2.8 – 06-10-2014 – Get-CsConnections.v2.8.zip

v2.7 – 05-24-2014 – Get-CsConnections.v2.7.zip

v2.6 – 02-08-2014 – Get-CsConnections.v2.6.zip

v2.5 – 11-26-2013 – Get-CsConnections.v2.5.zip

v2.4 – 09-13-2013 – Get-CsConnections.v2.4.zip

v2.3 – 08-01-2013 – Get-CsConnections.v2.3.zip

v2.2 – 05-10-2013 – Get-CsConnections.v2.2.zip

v2.1 – 12-13-2012 – Get-CsConnections.v2.1.zip

v2.0 – 10-16-2012 – Get-CsConnections.v2.0.zip

v1.9 – 09-21-2012 – Get-CsConnections.v1.9.zip

v1.8 – 09-14-2012 – Get-CsConnections.v1.8.zip

v1.7 – Get-CsConnections.v1.7.zip

v1.6 – Get-CsConnections.v1.6.zip

v1.4 – Get-CsConnections.v1.4.zip

v1.3 – Get-CsConnections.zip

v1.0 – Get-CsConnections.zip

Changelog

See the changelog for a complete list of features added in each release

One Liners: Finding AD Disabled Accounts Who are Still Lync/Skype for Business Enabled

August 10th, 2011 18 comments

Lync 2013 logo 128x128Fellow MVP Jeff Guillet wrote an article about the fact that disabling a user’s Active Directory account doesn’t mean they can’t log into Lync/Skype for Business. This is due to the way Lync uses certificates and authentication based on them. I highly recommend you read the article.

I recently was writing some documentation for a customer and wanted to include this important information, including methods for resolving the problem after the fact.

If you’ve not been disabling users in Lync while disabling them in AD, here’s a one liner to find those users:

Get-CsAdUser -ResultSize Unlimited | Where-Object {$_.UserAccountControl -match "AccountDisabled" -and $_.Enabled -eq $true} | Format-Table Name,Enabled,SipAddress -auto

You can shorten it somewhat by not checking if $_.Enabled is $true, but just that it exists. You can get a count of the users using:

Get-CsAdUser -ResultSize Unlimited | Where-Object {$_.UserAccountControl -match "AccountDisabled" -and $_.Enabled} | Measure-Object

and, if you want, can disable them in one line using

Get-CsAdUser -ResultSize Unlimited | Where-Object {$_.UserAccountControl -match "AccountDisabled" -and $_.Enabled} | Disable-CsUser

Update 09-14-2012: Be careful using that last option if you’ve configured test accounts for synthetic testing using the New-CsHealthMonitoringConfiguration cmdlet as I mention in Lync Synthetic Tests: What They are and When They Don’t Work – Part I.

Update 04-12-2014: Replaced aliases with full cmdlet per best practices.

Update 09-19-2014: Added -ResultSize Unlimited

Script: New-LoopbackAdapter.ps1 – Using PowerShell to Create and Configure a Loopback Adapter for Use with Direct Server Return Load Balancing in Exchange 2010 and Lync 2010

July 29th, 2011 1 comment

Using a hardware load balancer is very common to spread workload across multiple servers, as well as direct traffic to surviving servers when one goes down or is being patched. When using an HLB, there are several methods that can be used. The more conventional SNAT is quite popular, but another method, Direct Server Return, or DSR, provides for substantially increased performance. This can be key in environments where a lot of traffic from Exchange and/or Lync is going through the HLBs, or where the same HLBs are being used for many apps. Update: Tom Pacyk and John Cook pointed out that I neglected to mention that DSR based HLB is not supported on Lync Edge servers (and it won’t even work based on my testing). See Microsoft’s support statement at the bottom of http://technet.microsoft.com/en-us/library/gg425779.aspx. Sorry about the omission, guys!

The difference from a server side perspective, is that to use the DSR method, extra configuration is required when building the server. To configure a server for DSR based load balancing a loopback adapter is added and configured with the IP address of the load balancer VIP. This allows the server to accept packets targeted for the VIP address. Without it, the server would ignore them.

  • Add the Microsoft Loopback adapter
  • Unbind all services and protocols except IPv4
  • Rename the loopback adapter to “loopback” and rename the regular NIC to “net”
  • Assign an IP address and subnet mask (but no gateway)
  • Configure the adapter to not register its address in DNS
  • Set the adapter’s metric to 254
  • Adjust the adapter bindings so that it is lower than the normal NIC in the server
  • Set WeakHostSend and WeakHostReceive settings on both adapters

While adding and configuring the loopback adapter is simple enough, it’s a list of steps that is ideally suited for PowerShell – especially if you build a fair number of servers. Unfortunately, there is no straightforward methods to accomplish all of the required tasks. In order to configure the adapter bindings, a separate file must be downloaded. In order to even add the loopback adapter, yet another file needs to be downloaded. It’s almost more grief to try it through PowerShell than to just manually do it, right? Not so fast!

PowerShell is quite powerful. We can download the required files, unzip them if needed, and then use them as required to fulfill our needs. Of course, this assumes that the server has Internet connectivity.

Run the script one of two ways. Run just the script itself by typing

.\New-LoopbackAdapter.ps1

and the script will prompt you for the VIP IP and subnet mask.

Or, type

.\New-LoopbackAdapter.ps1 -vipip [ip address] -vipsm [subnet mask]

for example

.\New-LoopbackAdapter.ps1 -vipip 10.1.0.100 -vipsm 255.255.255.0

As with most of my scripts, tab completion for the parameters works, and there is a full help section by typing:

Get-Help .\New-LoopbackAdapter.ps1

Once the script completes, Explorer will open to the network adapters section so that you can verify the various steps have completed:

No services or protocols other than IPv4 bound to the loopback adapter:

IP address and subnet mask configured:

Metric set to 254:

DNS registration unchecked:

Loopback adapter at the bottom of the adapter bindings:

The script also creates a full transcript in the same folder as the script.

Installation

Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Download

New-LoopbackAdapter.zip

Script: Set-Lync2010Features.ps1 – Automated Prereq PowerShell Script for Lync Server 2010

July 25th, 2011 14 comments

If you’ve followed this blog for a while, you may remember one of the more popular posts, Automated prerequisite installation via PowerShell for Exchange Server 2010 on Windows Server 2008 R2. In that script, I used some simple techniques to help take some of the boring tasks out of installing Exchange 2010 servers. It was updated several times, and a new update is coming soon.

Well, Lync Server MVP Stale Hansen took that script and adapted it to installing the prerequisites for Lync Server 2010 and posted the results online. He did some neat things like installing the Best Practice Analyzer and the Resource Kit.

I took the script and added a bunch of functionality, including prerequisites for all Lync related roles, some added third-party tools such as the cool “Find Lync Versions” tool from Stephen Olsen, aka “Stumper”, was added as an option. Note: This automatically installs the .Net 4 framework.

I also added the ability to download some files that are needed – essentially automating some routine tasks. See the changelog file linked below for features added in each version.

For those of you doing Lync voice work, I haven’t done any deployments yet, so if there are tasks you’d like me to automate, please let me know and I can get them added when I have time.

Installation

Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Download

v5.3: Set-Lync2010Features.v5.3.zip

v5.2: Set-Lync2010Features.v5.2.zip

v5.1: Set-Lync2010Features.v5.1.zip

v5.0: Set-Lync2010Features.zip.

Changelog

See the changelog for this script for all version information

Changelog: Get-CsConnections.ps1

July 1st, 2011 8 comments

This is the changelog page for Get-CsConnections.ps1. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v3.5 – 08-14-2019

  1. Added some cleanup for the VVX and Trio device agent strings. Thanks to @UcMadScientist. See https://www.ucmadscientist.com/quick-post-pat-richards-get-csconnections-and-polycom-devices/

v3.4 – 03-27-2018

  1. Added more bugs to fix later. 🙂
  2. Fixed -SkipUpdateCheck. Thanks to Mike for pointing it out.
  3. Fixed issue where preferred connection order would not display for Skype for Business users when using -SipAddress option
  4. Minor tweaks per PsScriptAnalyzer and PSSharper
  5. Updated Remove-Variable function to v1.2
  6. Get-UpdateInfo updated function to v1.5
  7. Set-ModuleStatus updated function to v1.6
  8. Write-Log updated function to v3.2

v3.3 – 01-04-2017

  1. Now requires at least PowerShell 3.0
  2. minor code cleanup
  3. updated Get-UpdateInfo to 1.1

v3.2 – 11-17-2016

  1. Added new update routine
  2. Signed with new certificate

v3.1 – 04-07-2016

  1. added -SkipUpdateCheck to skip update check

v3.0 – 09-09-2015

  1. clarified some examples in the help section
  2. added detection for Skype for Business Server 2015

v2.9 – 10-28-2014

  1. Fixed an issue where PowerShell v2.0 machines would choke on one line. Thanks to Thierry for pointing it out.
  2. New code-signing certificate to replace expired cert

v2.8 – 06-10-2014

  1. Clarified ShowTotal output per Nate’s comment
  2. Fixed an issue where LRS clients would show a leading space for the agent string
  3. changed FE server info to be lower case to that it’s consistent
  4. the -pool parameter is now -PoolFqdn to align with other scripts and cmdlets
  5. fine tuned some of the code used when specifying -SipAddress

v2.7 – 05-24-2014

  1. fixed check for updates dialog border
  2. defined OverallRecords as an array to avoid an issue. Thanks to Tristan for that info.
  3. fixed verbose output not showing server names. Thanks to Greig for pointing it out.

v2.6 – 02-08-2014

  1. tweaked the MaxEndpointsPerUser section to always use the global configuration. This only matters in environments where multiple configurations exist (Get-CsRegistrarConfiguration). Thanks to Matt for pointing this out.
  2. swaped in new version of Set-ModuleStatus function
  3. cleanup of param block per best practices
  4. cleanup of comment help per best practices
  5. swaped in new verion of Test-ScriptUpdates

v2.5 – 11-26-2013

  1. tweaked SQL query for case insensitivity per Jean-Luc
  2. comment help updated to include info on Windows firewall config
  3. tweaked code when getting info for a single user to fix missing data for pool connection order

v2.4 – 09-13-2013

  1. Fixed output for unique users/clients
  2. Now validates if UserHighConnectionFlag is specified, and does not exceed MaxEndPointsPerUser

v2.3 – 08-01-2013

  1. intro code for script update check
  2. better pool version detection. When using the -Pool option, you no longer need to specify -Is2013 if it’s a 2013 pool
  3. Added code to restart script in an elevated session if the current session isn’t elevated (previously the script just threw an error and exited)

v2.2 – 05-10-2013

  1. Added support for Lync Server 2013 by using the -Is2013 switch. If I can find a better way of automatically detecting the version, I’ll incorporate that in a later build.
  2. Some code optimization
  3. Bug fix for an issue where the names of servers in a pool wouldn’t display if the script was run in PowerShell v3.

v2.1 – 12-13-2012

  1. Minor formatting tweaks for better handling long client names, such as the Lync RT client.
  2. Minor bug fixes

v2.0 – 10.16.2012

  1. Added -IncludeHighUsers option. Similar to -IncludeUsers, but only shows those users who meet the UserHighConnectionFlag value (shown in white), or exceeds it (shown in red).
  2. Added -ShowTotal option. When finished, shows statistics for the org, including total number of Lync enabled users, the total number of voice enabled users, and the percentage of enabled users that are currently connected.
  3. Updated the code the assembles FQDNs when just a pool or server netbios name are specified.
  4. If -SipAddress option is used, additional information showing the preferred connection order for the user is now also included. This adds the functionality of one liners: Finding out which Lync pool servers a user is associated with, and the preferred connection order.

v1.9 – 09-21-2012

  1. Finally resolved the issue where some front end servers would have a different number for PrimaryRegistrarClusterId in SQL Express than others, causing some servers to not return data (and not throw an error). Special thanks to Dave Howe @ Microsoft for helping me identify a work around, and also to Bart, a SQL Engineer at a client site who helped me tweak the related SQL query.
  2. A little code optimization
  3. -Server option added that now allows you to target a specific server instead of an entire pool.
  4. This version is code signed. You no longer are required to have a PowerShell Execution Policy of unrestricted or RemoteSigned. However, the script cannot be edited at all, or the code signature breaks.
  5. -SipAddr now supports specifying just the left part of the SIP address, but only in organizations with ONE SIP domain. For example, -SipAddr bill.gates instead of -SipAddr bill.gates@microsoft.com.
  6. -Server supports specifying the netbios domain. The script will “guess” at the FQDN by using the domain name of the machine the script is running on and appending it to the netbios name.

v1.8 – 09-14-2012

  1. Tons of formatting changes, mostly subtle
    1. Server names in the pool list are sorted
    2. Server names in the ‘Frontend Server’ list are now sorted
    3. Connections are now sorted by client
  2. Added -ShowFullClient switch to show extended client info.
  3. If -pool is not specified, and only one registrar pool exists, the script will automatically use that pool.
  4. Some additional verbose output added for troubleshooting

v1.7 – 09-07-2012

  1. Minor display sorting cleanup
  2. Streamlined some code
  3. Removed -IncludeUsers from automatically being set when using -ClientVersion

v1.6 – 07-02-2012

  1. Added feature to show just specific client versions and the connected users with that client

v1.4 – 04-19-2012

  1. cleaned up some of the param() block and added some validation
  2. streamlined some of the code
  3. tweaked the displayed results a little to better handle longer agent strings

v1.3 – 12-27-2011

  1. tweaked the formatting a little to account for longer agent strings due to mobile clients
  2. ignore the RtcApplication-[guid] account when calculating users and displaying userlist
  3. added error if pool doesn’t have any servers
  4. added UserHighConnectionFlag in parameter block to support pipeline entry

v1.1 – 08-09-2011

  1. added comment based help
  2. added option to display user list
  3. updated formatting
  4. added code so it will run in a normal PowerShell session

v1.0 – 07-01-2011

  1. original version

All Lync 2010 Cmdlets and the Default RBAC Roles That Can Use Them

June 1st, 2011 No comments

A customer asked for some documentation as to the various Lync cmdlets, what they do, and who can do them. Knowing that there are hundreds of cmdlets for Lync, this was a daunting task. Thank goodness for PowerShell, copy & paste, and some macros!

I used the script by Cezar Ungureanasu at http://blogs.technet.com/b/csps/archive/2010/06/10/scriptlistrbacrolesandcmdlets.aspx which shows you how to find out what cmdlets are available to specific default RBAC roles. I ran that in a virgin environment and captured the data to a .tsv file. I found a page from Microsoft at http://blogs.technet.com/b/csps/archive/2010/07/16/refallcmdlets.aspx which includes all 546 of the Lync cmdlets, a link to their associated Technet page, and a brief description. I merged that data into the .tsv file, and then added a formula that can be used to confirm what RBAC roles each cmdlet can be used by (in case an environment has been changed from the default settings). All of that was rolled into an Excel spreadsheet that can now be downloaded at the link below. This was perfect for the customer.

Recent updates include cmdlets added in Cumulative Update 4, as well as a new column indicating when the cmdlets were added to Lync. I’ll update that as I get more information.

Let me know if there are any issues, or if you can think of something I should add.

Download

v1.1 DefaultCmdletsByRBACRolev1.1.zip (11-20-2011)

v1.0 DefaultCmdletsByRBACRole.zip (06-01-2011)