This is a once-per-day (off-hours) script. Will cause clients to not show updated status properly when running. If you have a client that is left on, they need to hard-exit a'la File -> Exit, and restart the Lync client, and then everything will be fine. Otherwise, if it's run after-hours, clients that are off will come up the next day without any issue.

Lync Powershell module installed on this machine
Quest Active Roles installed on this machine
The presence of Add-CSContact.ps1 in the same directory as this script (download here:


You will want to specify the org-specific variables on lines 23 &24

Now modify the source input array starting on line 52. Use the array like this:

Field 0: departmental/buisness unit OU of Lync users
Field 1: name of the users file
Field 2: (not used currently)
Field 3: how the members OU title will appear in lync
Field 4: how the OU description appears in lync
Field 5: the contact file name
Field 6: (not used currently)
Field 7: (not used currently)


$BizUnitInfoArray = @(
,('domain.local/domain users/OU1','OU1 Users.csv','=OU1 Deptname=','',' Dept description','OU1Contact.csv','','')
,('domain.local/domain users/OU2','OU2 Users.csv','=OU2 Deptname=','',' Dept description','OU2Contact.csv','','')

$BizUnitInfoArray = @(
,('domain.local/domain users/Admin','ADMINUsers.csv','≡ADMIN≡','',' Administration','AdminContacts.csv','','')
,('domain.local/domain users/HR','HRUsers.csv','≡HR≡','',' Human Resources','HRContacts.csv','','')

Last edited Nov 21, 2016 at 3:40 PM by ashembers, version 5