Ya hemos visto como funciona el Server Manager, y hemos grabado varios videos en cuanto a su funcionalidad: Administrando nuestros Servers 2008 con Windows Server 2012 Server Manager {ScreenCast}. Hoy veremos como podemos modificarlo con la ayuda de PowerShell. Usualmente el Dashboard del Server Manager se ve así:

www.radians.com.ar

Hoy me gustaría compartir con ustedes dos scripts que fueron publicados hace un tiempo, porque cuando se trata de la automatización del Administrador de servidores, no se puede hacer dos cosas:

  • Añadir servidores a la lista de servidores gestionados
  • Crear grupos que contienen una lista personalizada de servidores

Si vemos las opciones que se despliegan cuando hacemos un clic en Manage veremos las siguientes opciones:

www.radians.com.ar

Pero en primer lugar, echemos un vistazo detrás del Administrador de servidores. Esta consola almacena la información en un archivo XML que se guarda por usuario en este lugar:

$ENV:APPDATA\Microsoft\Windows\ServerManager\ServerList.xml

Además, es útil saber que cada vez que se cierra una instancia en ejecución del Administrador de servidores, podemos sobrescribir los cambios de secuencias de comandos. Queremos tener cuidado de que antes de hacer cambios en el archivo XML, cerramos el proceso Administrador de servidores. También tenemos que hacer todos los cambios con elevación de permisos.

Por mas que sea un simple archivo XML, no hay que simplificarlo, ya que si nos equivocamos la consola dejara de funcionar. Si vemos en detalle la estructura del archivo XML, se ve que esto no es tan simple. El siguiente ejemplo es de un sistema recién instalado con un grupo adicional:

ServerManager.xml
***
<?xml version="1.0" encoding="utf-8"?>
<ServerList xmlns:xsd="
http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" localhostName="MyCloudComp001" xmlns="urn:serverpool-schema">
<ServerInfo name="MyCloudComp001" status="1" lastUpdateTime="2013-08-08T09:01:26.7659233+00:00" locale="en-US" /><ServerGroupInfo id="3" name="MyGroup" />
<ServerGroupMembership server="MyCloudComp001" serverGroupId="3" />
</ServerList>
***

Como se puede ver desde las líneas iniciales, la estructura XML se utiliza un espacio de nombres adicional que se denomina: urn:serverpool-schema. Cuando se desea agregar nuevos elementos a esta estructura, hay que hacerlo de forma manual. Para hacerlo podemos utilizar la secuencia de comandos del script Add-ServerToManagedServerList.ps1. Aquí están las líneas mas importantes:

$NewServer = $ServerList.CreateElement("ServerInfo")
$NewServer.SetAttribute("name",$ComputerName.ToString()) | Out-Null
$NewServer.SetAttribute("xmlns","urn:serverpool-schema") | Out-Null
$ServerList.ServerList.AppendChild($NewServer) | Out-Null

Así estableciendo el atributo justo en la notación de la derecha hace el truco para nosotros. Ahora tenemos el servidor que acaba de agregar en el Administrador de servidores.

www.radians.com.ar

Lo mismo ocurre cuando se trata de agregar el servidor a un grupo existente.

$NewServerInGroup = $ServerList.CreateElement("ServerGroupMembership")
$NewServerInGroup.SetAttribute("server",$ComputerName.ToString()) | Out-Null
$NewServerInGroup.SetAttribute("serverGroupId",$PSItem.Id) | Out-Null
$NewServerInGroup.SetAttribute("xmlns","urn:serverpool-schema") | Out-Null
$ServerList.ServerList.AppendChild($NewServerInGroup) | Out-Null

Debido a que este es un grupo existente, tenemos que asegurarnos de que el ID del grupo se agrega a los atributos de la entrada. Así que esta es la forma de agregar un nuevo servidor a la lista de servidores administrados. Sencillo, ¿no?  Un nuevo grupo de servidores se muestra aquí:

www.radians.com.ar

También puede añadir algunos grupos personalizados con el script New-ServerManagerGroup.ps1. Se crea un número aleatorio y lo utiliza como el ID de grupo necesario.

$Global:ServerGroupID = Get-Random -Maximum 1000
$NewServerGroup = $ServerList.CreateElement("ServerGroupInfo")
$NewServerGroup.SetAttribute("id",$Global:ServerGroupID) | Out-Null
$NewServerGroup.SetAttribute("name",$Name) | Out-Null
$NewServerGroup.SetAttribute("xmlns","urn:serverpool-schema") | Out-Null
$ServerList.ServerList.AppendChild($NewServerGroup) | Out-Null

Aquí podemos ver interruptores adicionales, como -Backup (para guardar el ServerManager.xml anterior) y StartServerManager (para el lanzamiento del Administrador de servidores después de sus adiciones). Tengamos en cuenta que los scripts proporcionados comprobemos siempre que no este un proceso servermanager.exe y en caso de ser necesario finalizarlo.

Los siguientes scripts se cargan en el Script Center Repository:

Espero les sea de interes y utilidad. Saludos. Roberto Di Lello.

Mas información:

  • Script Center Repository – New-ServerManagerGroup.ps1
  • Script Center Repository – Add-ServerToManagedServerList.ps1
  • Hey, Scripting Guy! Blog
  • By Roberto Di Lello

    Hola, soy Roberto Di Lello trabajo como Consultor Senior en Infraestructura, especializado en Tecnologias Microsoft con mas de 25 años en la industria. He sido galardonado como MS-MVP en Active Directory-Enterprise Mobility por 10 años, y actualmente soy MVP Windows Insider, ademas de poseer otras certificaciones de Microsoft. He trabajado en distintos projectos que involucran Migraciones, Implementaciones, y soporte de Active Directory y Microsoft Exchange, y en los ultimos años me he desempeñado armando equipos de trabajo para diferentes paises y areas de sistemas, he planificado a distintas migraciones a datacenters (ambiente cloud y mixtos). He tenido la oportunidad de participar como miembro del staff de Microsoft en eventos internacionales como ser TechEd NorteAmerica y MS Ignite (NA) al ser Trainer Certificado por Microsoft (MCT).

    Deja un comentario

    Tu dirección de correo electrónico no será publicada.

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.