Microsoft Lync Server
Header

​Como sabéis no todas las tareas administrativas en Lync se pueden realizar desde el ​Panel de Control, sino que tenemos que configurar ciertas características mediante PowerShell. Seguramente en alguna ocasión no tenéis acceso al servidor vía RDS o Consola, por lo tanto no podéis conectaros y realizar las tareas encomendadas.  Podemos utilizar Powershell ISE para establecer una sesión remota, y  para ello tenemos estos tres comandos:

$cred = Get-Credential “dominio\usuario”

$session = New-PSSession -ConnectionURI “https://fqdn_lync_server/OcsPowershell” -Credential $cred

Import-PsSession $session 
 
Para poder conectaros remotamente con PowerShell debéis cumplir los siguientes requisitos:

  • Actualizaciones instaladas de .Net Framework y PowerShell
  • Si utilizáis certificados privados debéis tener instalado el certificado raíz de confiaza en el equipo desde el cual queremos conectanos
  • Es posible que tengáis que ejecutar el siguiente cmdlet: Set-ExecutionPolicy Unrestricted para establecer sesiones remotas
  • Debemos tener instalado PowerShell ISE

Por parte del servidor debemos tener habilitado la conexión remota de Windows mediante PowerShell, para ello debemos ejecutar el cmdlet  Enable-PSRemoting en cada servidor de Front-END de Lync
power_shell_remoto_1.png
Si queremos verificar que el servicio se ha iniciado escribimos el siguiente cmdlet: Get-Service WinRM
power_shell_remoto_2.png
Con el script anterior lo que haremos será establecer una sesión vía HTTPS (recomendado) contra el servidor Front-END o Pool en el directorio OcsPowerShell  del Sitio Web Interno 

 power_shell_remoto_9.png

Una vez que iniciamos la conexión al servidor de Lync nos solicitará las credenciales del usuario establecido en la primera línea del script:

$cred = Get-Credential “dominio\usuario”

En la segunda línea del script le indicamos la URL del servidor Front-END o Pool y que nos solicite las credenciales para el usuario indicado en la primera línea mediante la variable $cred
 
$session = New-PSSession -ConnectionURI “https://fqdn_lync_server/OcsPowershell” -Credential $cred
 
power_shell_remoto_13.png

Si introducimos correctamente las credenciales y tenemos los privilegios necesarios se establecerá la sesión y nos descargaremos los cmdlets disponibles (no tenemso todos los cmdlets disponilbes de forma remota). Esto se lo indicamos en el tercer comando del script: Import-PsSession $sessionpower_shell_remoto_14.png

Ahora podemos empezar a administrar nuestro servidor de Lync, además tenemos disponibles la ayuda sobre cada cmdlet y la función de autocompletar 
power_shell_remoto_15.png

 
Una vez que escribrimos el cmdlet aceptamos el comando  y nos mostrará el resultado
power_shell_remoto_16.png
cuando queramos desconectar la sesión, tenemos el siguiente cmdlet que desconectará la sesión remota del servidor

 
Remove-PsSession $session
 
Como vemos una vez desconectados, no tenemos los cmdlets de Lync disponibles 

power_shell_remoto_17.png

Aqui os dejo el script para que podáis utilizarlo, pero antes debéis modificar los valores de usuario y servidor Frotn-END o Pool por vuetros datos PowerShellLync.rarPowerShellLync.rar. Si queremos conectarmos mediante internet debemos crear la regla de publicación necesario y debemos tener en cuenta el sistema de autenticación para la delegación de la misma desde el Reverse-Proxy.

Espero que os sea de utilidad!!

Una de las cosas más importantes que debemos tener en cuenta cuando hemos puesto en marcha un proyecto de Lync, es la planificación del backup. Debemos seguir las instrucciones de MSFT para garantizar la correcta configuración del Backup, y además añadirlo a la ventana de Backup del resto de la infraestructura

Backup_Lync_Server_2013_1.png
Lo primero que debemos tener claro es de que información debemos hacer backup, debemos exportar las siguientes configuraciones: 
​Nombre ​Descripción ​cmdlet
​Almacén Central ​Topología, Políticas y Configuraciones (Xds.mdf) ​Export-CsConfiguration
​Información de Localización ​Información de la configuración de la telefonía IP Empresarial (Enterprise Voice Enhanced 9-1-1, E9-1-1) (Lis.mdf) ​Export-CsLisConfiguration
Información de Usuarios​ ​Iniformación de Usuarios: Contactos, Programación de Conferencias, Derechos de Usuario, etc… (RTCXDS.mdf) ​Export-CsUserData
​Grupos de Respuesta Configuración de los Grupos de Respuesta ​Export-CsRgsConfiguration
​Chat Persistente ​Configuración del Chat Persistente ​Export-CsPersistentChatData
​Archivado ​Backup de la BBDD de Archivado (LcsLog.mdf) ​sqlcmd.exe
​Monitorización ​Backup de las BBDD de Monitorización: Detallesa de Llamadas y QoE (LcsCDR.mdf and QoeMetrics.mdf) ​sqlcmd.exe
​Almacén de Ficheros ​Almacén de Ficheros ​Robocopy
 
Yo he creado un pequeño script muy sencillo en PowerShell para realizar la exportación de las distintas configuraciones de la tabla anterior. Además, he creado también script de SQL para realizar el Backup de las BBDD que tenemos en nuestro servidor de SQL desde SQLCMD. De tal forma que desde un solo script en PowerShell podemos lanzar todas las tareas necesarias para completar el Backup. También se ha creado una estructura de carpetas para ir almacenando cada una de la configuraciones exportadas, pero el que quiera tener todos los ficheros en una única carpeta solo tiene que cambiar la ruta de los ficheros exportados en el script
Backup_Lync_Server_2013_2.png
He creado un script de SQL para ejecutar desde una linea de comandos (SQLCMD) el backup de las BBDD que necesitamos, y es el siguiente (Backup_SQL_Lync.sql)
Backup_Lync_Server_2013_3.png
En este script lo que tenemos son las BBDD las cuales debemos incluir en el backup, este fichero será llamado desde SQLCMD para automatizar algo el proceso. Ahora vamos a ver el script de powershell que he creado para completar todas las tareas de backup, voy a tratar de describirlo línea a línea:
Backup_Lync_Server_2013_4.png
 
1 Get-childitem .\ -include *.zip,*.bak -recurse | remove-item : Borra todos los ficheros con extensión .zip y .bak que se corresponden con ficheros de backup antiguos. Debemos borrarlos para que puedan ejecutarse los cmdlets Export-CsXXXX sin errores, porque sino nos devolverá un error que ya existe el fichero de destino
 
2 Export-CsConfiguration -FileName .\Config\Config.zip : Exporta la configuración del Almacén Central
 
3 Export-CsLisConfiguration -FileName .\Location\Location.zip : Exporta la configuración de la configuración de la telefonía IP Empresarial
 
4 Export-CsRgsConfiguration -Source "ApplicationServer:pool.asirsl.com/1987d3c2-4544-489d-bbe3-59f79f530a83" -FileName .\RGroup\RGroup.zip : Exporta la configuración del grupo de respuesta
 
5 Export-CsUserData -PoolFQDN "pool.asirsl.com" -FileName .\UserData\User.zip : Exporta la configuración de los usuarios
 
6 Export-CsPersistentChatData -DBInstance "srv-sql00.asirsl.com" -FileName .\PChat\PChatDB.zip : Exporta la base de datos del Chat Persistente
 
7 Start-Process "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe" -argumentlist "-S srv-sql00.asirsl.com -i Backup_SQL_Lync.SQL" : Iniciamos el proceso de SQLCMD para lanzar el proceso de backup de las BBDD de Archivado y Monitorización, para ello se le indica el fichero Backup_SQL_Lync.SQL en donde se le indica que BBDD deben copiarse y su ubicación
 
8 Start-Process C:\windows\system32\robocopy.exe -argumentlist "\\srv-sql00.asirsl.com\D$\backup .\SQL /mov" : Movemos con Robocopy  los ficheros de Backup de las BBDD hacia el servidor desde el cual hemos iniciado este proceso, de tal forma que borramos los ficheros en la ubicación original del backup.
 
9 Start-Process C:\windows\system32\robocopy.exe -argumentlist "\\srv-lync01.asirsl.com\Shared$ .\FileShared /copyall /s /e" : Copiamos los ficheros del almacén compartido
 
De esta forma cada vez que se ejecute el script se borran las exportaciones y BBDD anteriores para volcarse las actuales. Ahora nos quedaría crear una tarea programada para que se ejecute el script Backup_Lync2013.ps1 con la periodicidad que consideremos oportuno. Y por último quedaría pendiente sería incluir la carpeta C:\BACKUP en los procesos de Backup de la empresa, de tal forma que todos los subdirectorios que tienen las configuraciones actuales se almacenen con el resto de copias de seguridad. Ya es cuestión de cada cual la periodicidad de los Backups, tanto en la ejecución del script en el propio servidor de Lync como la inclusión de la carpeta BACKUP en las tareas de Backup de la empresa.
 
Aqui os dejo los dos scripts que he comentado en el artículo por si queréis utilizarlo en algún momento Backup_Lync_2013.rarBackup_Lync_2013.rar. Debéis sustituir los nombres de los servidores por los vuestros, lo he modificado antes de guardarlo para que no os confunda, está asi:
Backup_Lync_Server_2013_5.png
Este script ha sido probado en la siguiente topología:
 
Versión Lync Server: 2013
Front-END: Pool Enterprise
Sistema Operativo: Windows Server 2012
SQL Server: 2008 R2Standard
 
Si queréis utilizarlo en una versión de Front-END Standard tenéis que modificar los FQDN de los distintos servidores y el nombre de las instancias de SQL por las que correspondan.
 
En este artículo no contemplo el Backup de los certificados, etc… solo trataba de comentar las tareas de Backup más propias de Lync Server. Si queréis ampliar la información sobre las  tareas de backup de Lync server aquí tenéis un enlace muy interesante: Preparing for Lync Server Backup and Restoration
 
Espero que os sea de utilidad!!!