Automatizar la habilitación y deshabilitación de usuarios de Lync/Skype for Business
Cuando veo que los administradores habilitan manualmente a todos sus usuarios de Lync/Skype for Business, me da vergüenza. Con solo unas pocas líneas de PowerShell y una tarea programada, puede habilitar a los usuarios para Lync/Skype for Business automáticamente. Simplemente copie los ejemplos de secuencias de comandos y modifíquelos con los detalles de su infraestructura y realice una tarea programada en su servidor Lync/Skype For Business o que no sea Lync/Skype for Business a través de la comunicación remota.
Lo primero que hay que determinar es quién debe estar habilitado para Lync/Skype for Business y la configuración necesaria que se debe proporcionar a esos usuarios. Proporcionaré ejemplos de diferentes escenarios que habilitan o deshabilitan usuarios. (Todos los ejemplos solo buscan usuarios de Lync/Skype for Business que no están habilitados actualmente y asumen que la dirección de correo electrónico sería la dirección SIP habilitada).
Ejemplo #1: Habilite a todos los usuarios de la empresa con una cuenta de correo electrónico que coincida con @sudominio.com para el uso normal de Lync.
Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' } |
Enable-CsUser -RegistrarPool 'yourpool' -SipAddressType emailaddressEjemplo #2: Habilite a todos los usuarios de la empresa dentro de una unidad organizativa de Active Directory específica y una cuenta de correo electrónico que coincida con @sudominio.com para el uso normal de Lync.
Get-CsAdUser -OU 'your.domain.com/OU' -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' } |
Enable-CsUser -RegistrarPool 'yourpool' -SipAddressType emailaddressEjemplo #3: Habilite a todos los usuarios de la empresa con un atributo de ciudad específico para el uso normal de Lync con un grupo de registradores adecuado.
Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' -and City -eq 'YourCityName' } |
Enable-CsUser -RegistrarPool 'yourlocationdependantpool' -SipAddressType emailaddress
Ejemplo #4: Habilite a todos los usuarios de la empresa con un atributo de ciudad específico para el uso normal de Lync con un grupo de registradores apropiado y una política de ubicación específica.
$users = Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' -and City -eq 'YourCityName' }
ForEach ($user in $users)
{
Enable-CsUser $user.Identity -RegistrarPool 'yourlocationdependantpool' -SipAddressType emailaddress
Grant-CsLocationPolicy -Identity $user.Identity -PolicyName 'yourlocationpolicy' -Confirm:$False
}Ejemplo n.º 5: Habilite a todos los usuarios de la empresa con un atributo de ciudad específico para Enterprise Voice con una política de voz, un plan de marcado, una política de conferencias y una política de ubicación específicos. (No olvide un URI de línea único cuando ejecute el comando Set-CsUser si es necesario).
$users = Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' }
ForEach ($user in $users)
{
Enable-CsUser -Identity $user.Identity -RegistrarPool 'yourlocationdependantpool' -SipAddressType emailaddress
Set-CsUser -Identity $user.Identity -EnterpriseVoiceEnabled $True -Confirm:$False
Grant-CsConferencingPolicy -Identity $user.Identity 'yourconferencingpolicy' -Confirm:$False
Grant-CsDialPlan -Identity $user.Identity -PolicyName 'yourdialplan' -Confirm:$False
Grant-CsLocationPolicy -Identity $user.Identity -PolicyName 'yourlocationpolicy' -Confirm:$False
Grant-CsVoicePolicy -Identity $user.Identity -PolicyName 'yourvoicepolicy' -Confirm:$False
}Ejemplo #6: El siguiente ejemplo destaca PowerShell Remoting para ejecutar de forma remota la habilitación de cuentas de usuario desde una computadora separada.
$serviceuser = 'serviceuser'
$servicepassword = 'servicepassword' | ConvertTo-SecureString -AsPlainText -Force
$servicecredential = New-Object system.Management.Automation.PSCredential($serviceuser, $servicepassword)
$lyncsession = New-PSSession -ConnectionUri 'https://yourpoolname/ocspowershell' -Credential $servicecredential
$emailaddress = '*@yourdomain.com'
Invoke-Command -Session $lyncsession -ScriptBlock {
param ($emailaddress) Get-CsUser -Filter "WindowsEmailAddress -like '$emailaddress'" |
Enable-CsUser -RegistrarPool 'yourpool' -SipAddressType emailaddress
} -ArgumentList $emailaddress
Remove-PSSession $lyncsession
Ejemplo #7: El siguiente ejemplo destaca el recorrido por varias ciudades y la configuración del grupo y las políticas adecuadas según esa ciudad. Este ejemplo utiliza un archivo .CSV que contiene todas las ciudades y sus respectivas configuraciones. Podrías lograr lo mismo a través del código agregando un objeto personalizado y luego agregando cada ciudad. Se prefiere usar un archivo .CSV ya que le permitirá agregar o eliminar ciudades en el futuro sin cambiar el script.
<#
Contents of an example cities.csv
Name,RegistrarPool,DialPlan,ConferencingPolicy,LocationPolicy,VoicePolicy
London,LondonPool,LondonDialPlan,LondonConferencingPolicy,LondonLocationPolicy,LondonVoicePolicy
Chicago,ChicagoPool,ChicagoDialPlan,ChicagoConferencingPolicy,ChicagoLocationPolicy,ChicagoVoicePolicy
Toronto,TorontoPool,TorontoDialPlan,TorontoConferencingPolicy,TorontoLocationPolicy,TorontoVoicePolicy
Sydney,SydneyPool,SydneyDialPlan,SydneyConferencingPolicy,SydneyLocationPolicy,SydneyVoicePolicy
#>
$cities = Import-Csv cities.csv
ForEach ($city in $cities) {
$users = Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like ‘*@yourdomain.com’ -and City -eq $city.Name }
ForEach ($user in $users)
{
Enable-CsUser -Identity $user.Identity -RegistrarPool $city.RegistrarPool -SipAddressType emailaddress
Set-CsUser -Identity $user.Identity -EnterpriseVoiceEnabled $True -Confirm:$False
Grant-CsConferencingPolicy -Identity $user.Identity $city.ConferencingPolicy -Confirm:$False
Grant-CsDialPlan -Identity $user.Identity -PolicyName $city.DialPlan -Confirm:$False
Grant-CsLocationPolicy -Identity $user.Identity -PolicyName $city.LocationPolicy -Confirm:$False
Grant-CsVoicePolicy -Identity $user.Identity -PolicyName $city.VoicePolicy -Confirm:$False
}
}
Los siguientes son algunos ejemplos de cómo deshabilitar automáticamente a los usuarios de Lync si su cuenta de Active Directory está deshabilitada.
Ejemplo #1: Deshabilitar Lync/Skype Empresarial para todos los usuarios de Active Directory que estén deshabilitados.
Get-CsAdUser -LDAPFilter "(&(userAccountControl:1.2.840.113556.1.4.803:=2)(msRTCSIP-UserEnabled=TRUE))" |
Disable-CsUserEjemplo #2: Deshabilitar remotamente Lync/Skype for Business de todos los usuarios en Active Directory que están deshabilitados.
$serviceuser = 'serviceuser'
$servicepassword = 'servicepassword' | ConvertTo-SecureString -AsPlainText -Force
$servicecredential = New-Object system.Management.Automation.PSCredential($serviceuser, $servicepassword)
$lyncsession = New-PSSession -ConnectionUri 'https://yourpoolname/ocspowershell' -Credential $servicecredential
Invoke-Command -Session $lyncsession -ScriptBlock {
Get-CsAdUser -LDAPFilter "(&(userAccountControl:1.2.840.113556.1.4.803:=2)(msRTCSIP-UserEnabled=TRUE))" |
Disable-CsUser
}
Remove-PSSession $lyncsession
Ejemplo #3: Según lo solicitado, aquí está la solución para deshabilitar remotamente Lync/Skype for Business de todos los usuarios de un grupo de Active Directory. La clave aquí es ajustar el filtro LDAP para incluir sólo a miembros de un grupo en particular.
$serviceuser = 'serviceuser'
$servicepassword = 'servicepassword' | ConvertTo-SecureString -AsPlainText -Force
$servicecredential = New-Object system.Management.Automation.PSCredential($serviceuser, $servicepassword)
$lyncsession = New-PSSession -ConnectionUri 'https://yourpoolname/ocspowershell' -Credential $servicecredential
Invoke-Command -Session $lyncsession -ScriptBlock {
Get-CsAdUser -LDAPFilter "(&(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com)(msRTCSIP-UserEnabled=TRUE))" |
Disable-CsUser
}
Remove-PSSession $lyncsession
No dude en dejar un comentario con el escenario requerido y actualizaré esta publicación con la solución.