jueves, 24 de octubre de 2019

Solventar error en VDP: Operation failed due to existing snapshot

Un error que pasa con poca frecuencia, pero tarde o temprano aparece en VDP consiste en el fallo del backup avisando de la existencia de que hay un snapshot previo. Miras el Snapshot Manager, y  compruebas que no hay snapshots, y que no se puede consolidar la VM. Pero el error persiste:


¿Cómo puede ser que esté detectando un snapshot, si ya has verificado que no hay ninguno lanzado de forma manual, y a lo mejor incluso en VDP estás configurando la tarea por primera vez? Vale, configurando el backup por primera vez es imposible que pase, pero a lo mejor la máquina ha sido movida o copiada, o bien previamente tuvo respaldo de otro VDP, que son causas probables para el error.

Básicamente, lo que suele suceder es que algún archivo delta se queda enganchado en la VM, impidiendo su eliminacion y por tanto, su borrado y posibles backups posteriores. Veamos un ejemplo. Tenemos una VM con un solo disco.


Pero vamos al navegador de ficheros, y nos encontramos con esto:


Vemosque hay multitud de archivos delta que no deberían estar. Es mas, ni siquiera se utilizan, estan "perdidos", por decirlo de algun modo. De forma que podemos eliminarlos con la tranquilidad de que no vamos a perder datos por ello. En el caso de la imagen superior, eliminaremos todos los archivos que vemos ahora marcados, apagando previamente la VM.


Tras esto, podemos arrancar la VM, que funcionará sin problemas.

Como se ve en la imagen, también elimino, ademas de los archivos delta, los archivos de log y los .ctk. Es importante eliminar los archivos ctk, ya que contienen una lista de cambios producidos en la VM tras el último backup. Basicamente, contienen la informacion de los bloques de informacion que han cambiado, en vez de contener la informacion completa del disco. Solo debería haber un archivo ctk en la VM.

miércoles, 23 de octubre de 2019

Cómo conectar a Exchange Online con PowerShell

Ya sabemos que Microsoft quiere que administremos todo con PowerShell, y eso incluye sus servicios on-line. Y aunque el interfaz gráfico es muy cómodo, puntualmente se presentan tareas que es recomendable realizar via PowerShell, en lugar de pelearnos con los distintos menús de los sistemas de Azure.


En este caso, vamos a ver cómo realizar la conexión a Exchange Online PowerShell, ya que hay que realizar alguna configuración previa. Lo primero de todo, abrimos PowerShell como administradores.
Ejecutamos el comando  "Set-ExecutionPolicy RemoteSigned" para solicitar que lo que se descargue de Internet sea de confianza (esto vale con realizarlo solo una vez), y le pasamos nuestras credenciales con "$UserCredential = Get-Credential" (el nombre completo de cuenta, con el @xxx.com).


A continuación, realizaremos la conexión. Para ello, hay que tener primero en cuenta el requisito de proxy. Para ello, pasamos el siguiente comando primero, si vamos pro proxy. Si no, saltatelo:

$ProxyOptions = New-PSSessionOption -ProxyAccessType <Value
donde el valor "value" debe ser IEConfig, WinHttpConfig o AutoDetect, según lo que corresponda (siempre se puede cambiar el valor a posteriori, si te has equivocado al pasarlo.

Después pasamos el comando de conexion a Office365:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

Si configuraste proxy, al final del comando debes agregar "-SessionOption $ProxyOptions" (sin comillas), quedando esto: $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection -SessionOption $ProxyOptions

Ya solo queda por pasar el comando "Import-PSSession $Session -DisableNameChecking", sin comillas.


Dos últimos detalles:
- Al finalizar, ejecutar el siguiente comando para cerrar sesión: Remove-PSSession $Session
- Puede suceder que estés trabajando en un entorno híbrido. En ese caso, necesitas instalar un archivo desde tu centro de administracion de Exchange Online, en el apartado "híbrido".


Seleccionas la opción que corresponda, y autorizas la descarga. Para la implementación híbrida, el paquete que descarga es Microsoft.Online.CSE.Hybrid.Client.application.


Si da problemas, lanza la descarga desde Internet Explorer (todavía andamos así, Microsoft?).
Con esto, deberia ser posible realizar consultas y modificaciones de cuentas, asi como migraciones de un entorno a otro desde linea de comandos.

Para agregar el complemento de PowerShell, que puede ser lo que falte para determinados comandos, hay que instalar el módulo PowerShell:


Similar a la instalación del módulo híbrido, pero en vez de pedir la ejecución de una aplicación, ejecuta una ventana de PowerShell con las instrucciones de conexión:


Para verificar que la conexion ha sido realizada correctamente, basta con ejecutar en PowerShell el comando get-mailbox.
Para cualquier duda adicional, tenéis el enlace de Microsoft de ayuda en este ENLACE.

miércoles, 9 de octubre de 2019

Añadir listado de usuarios a grupo de Directorio Activo

Un va pequeño script (muy pequeño, realmente, apenas son 4 lineas) para agregar un listado de usuarios a un grupo de directorio activo.


Normalmente, con un simple copypaste de un excel al cuadro para agregar miembros al grupo valdria, pero cuando la cantidad de usuarios es masiva, la copia de miles de celdas no le sienta muy bien a la consola de AD, asi que mejor, con esta ejecucion de powershell:

Import-module ActiveDirectory $Fichero = Import-CSV "c:\ListadoUsuarios.csv" 
$Fichero.UserPrincipalName | ForEach-Object {        Add-ADGroupMember -Identity "nombredelgrupo" -Members $_
}
Solo eso. Desde Powershell ISE  pegamos estas lineas, que hacen lo siguiente:
En linea 1, importamos el modulo para trabajar con AD
Linea 2, Indicamos la ubicacion y nombre del fichero .csv con los usuarios.
Lineas 3 y 4, van agregando a los usuarios, uno por linea de excel.

Importante: El fichero .csv debe comenzar en la linea 1 con "UserPrincipalName", quedando asi:


No hay mas. Se puede hacer más complicado, se puede poner recuento de usuarios, pero, la verdad, en las pruebas hechas, no falla, asi que, ¿para qué complicarlo?