This script queries one or multiple OU's to check for userobject that aren't enabled for Lync yet.

Userobjects that don't have an emailaddress or that are disabled will be ignored. The script uses the emailaddress as the sipaddress, but is easily modified to use a different type of sipaddress.

This script can be used as a scheduled task to run daily and enable new users for Lync without admin-interaction.

 

PowerShell
Edit|Remove
<#  
.NOTES  
    Name: Enable-Lync.ps1  
    Author: Leon Hament  
    Requires: PowerShell V2, Lync 2010. The account running  
    this script needs to have permissions to enable Lync users. 
    Version History:  
    1.0 - 8/7/2014 - Initial release of this script.  
.SYNOPSIS  
    Enables users from one or multiple OUs and generates an Email when succesful.  
.DESCRIPTION  
    This script queries one or multiple OUs for users with an emailaddress 
    but that aren't enabled on the Lyncpool. Disabled accounts will be skipped. 
    When users are enabled, an email is send. 
.EXAMPLE  
    [PS] C:\>.\Enable-Lync.ps1 <no parameters>  
    The script queries the OUs and Lync-enables users.  
 
#>  
 
Import-module Lync 
 
# --- Begin User Defined Variables ---  
# Define the Lync pool.  
$LyncPool = "pool.contoso.com" 
# Define the OU(s) where the users are located.  
$Ous = "ou=Chicago,dc=Contoso,dc=com","ou=New York,dc=Contoso,dc=com","ou=Seatle,dc=Contoso,dc=com" 
# Define the SMTP server. 
$smtpServer="mail.contoso.com" 
# --- End User Defined Variables ---  
# clear the variables 
$OUUsers = $null 
$enabledUsers = $null 
# get all useraccounts with a mailaddress, that are not disabled and don't have a SIPaddress 
$OUUsers = $OUs | Foreach {Get-CsAdUser -Filter {Enabled -ne $True-OU $_ | Where-Object {$_.UserAccountControl -notlike "*AccountDisabled*"| Where-Object {$_.WindowsEmailAddress -ne ""| Where-Object {$_.SIPAddress -eq ""} }; 
# check if there are any users to enable and enable them 
if ($OUUsers -ne $null) { 
       $OUUsers | Foreach-Object { 
        Enable-CsUser -Identity $_.UserPrincipalName -RegistrarPool $LyncPool -SipAddressType EmailAddress 
        $EnabledUsers +$_.Name 
        $EnabledUsers +", " 
    } 
# send an email to notify  
       $subject="Users enabled for Lync" 
       $body= @" 
                <p>Dear ServiceDesk,</p> 
                <p>The following user(s) have been enabled for Lync</p> 
                <p></p> 
                <p>$EnabledUsers</p> 
                <p></p> 
                <p> 
                <p>If you have any questions, you can contact the UC Team (Tel: 1234 / Mail: ucteamk@contoso.com)</p> 
                <p></p> 
                <p>Kind regards,</p> 
                <p>UC Team</p> 
"@ 
       Send-Mailmessage -smtpServer $smtpServer -from "UCTeam@contoso.com" -to "servicedesk@Contoso.com" -subject $subject -body $body -BodyAsHtml 
     }