Búsqueda de sitios web

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 emailaddress

Ejemplo #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 emailaddress

Ejemplo #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-CsUser

Ejemplo #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.

Artículos relacionados