El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Script Powershell para listar las máquinas virtuales gestionadas por un servidor de System Center Virtual Machine Manager 2008

Posted by urpiano en Miércoles 21 \21\UTC octubre \21\UTC 2009

Este script nos permite obtener un listado de las máquinas virtuales que son gestionadas por un servidor de SCVMM, listado que se vuelca a un fichero de valores separados por tabuladores, ideal para ser abierto con Excel. El script es necesario que sea lanzado desde un servidor SCVMM o desde un equipo que tenga la consola de SCVMM instalada, para que así pueda cargar los Snap-ins de SCVMM.

La sintaxis de script es:

<ruta>\listar-vms -VMM <servidor scvmm> -Fichero <ruta y nombre de fichero>

Siendo:

  • ruta (requerido): Powershell exige que los scripts sean lanzados indicando la ruta donde están, no le vale que estén en una carpeta que esté referenciada en la variable de entorno PATH. En el caso de que se encuentre en la misma carpeta donde se encuentra localizado el propio Powershell se puede poner como ruta un punto (.).
  • VMM(requerido): Nombre del servidor SCVMM del que se obtendrá el listado.
  • Fichero (requerido): ruta y nombre del fichero en el que se volcará el listado

Ejemplos:

Se listarán las máquinas virtuales gestionadas por el servidor de System Center Virtual Machine Manager bacterio-vmm y el resultado se volcará en el fichero \\bacterio-fs\vmms\bacterio-vmm.tab. El script está situado en la misma carpeta en la que se encuentra Powershell al momento de invocarlo:

.\listar-vms -VMM bacterio-vmm -Fichero \\bacterio-fs\vmms\bacterio-vmm.tab

Se listarán las máquinas virtuales gestionadas por el servidor de System Center Virtual Machine Manager bacterio-vmm y el resultado se volcará en el fichero \\bacterio-fs\vmms\bacterio-vmm.tab. El script se encuentra ubicado en la carpeta c:\scripts-ps\vmm:

c:\scripts-ps\listar-vms -VMM bacterio-vmm -Fichero \\bacterio-fs\vmms\bacterio-vmm.tab

Este es el código del script

################################################################################
# listar-vms.ps1                                                               #
#                                                                              #
# Este script lista las máquinas virtuales gestionadas por el servidor de      #
# System Center Virtual Machine Manager 2008 recibido como parámetro y vuelca  #
# el resultado en un fichero de texto de ruta y nombre el recibido como        #
# parámetro.                                                                   #
#                                                                              #
# Parámetros:                                                                  #
#                                                                              #
#          -VMM: Nombre o IP del servidor de SCVMM 2008 al que conectar        #
#          -Fichero: Ruta y nombre del fichero de valores separados por        #
#                    tabulador en el que se guardará el listado. Ideal para    #
#                    ser abierto con Excel                                     #
#                                                                              #
# Ejemplo:                                                                     #
#                                                                              #
# .\listar-vms.ps1 -VMM SVMMBacterio -Fichero e:\vmms\vms-tia.txt              #
#                                                                              #
# © Fernando Reyes                                                             #
# Octubre de 2009                                                              #
#                                                                              #
################################################################################

#Declaramos los parámetros que recibe el script
param([string] $VMM,[string] $Fichero)

# Comprobamos si están cargados los Cmdlets de Virtual Machine Manager.
# En caso contrario los cargamos.
If(!(Get-PSSnapin | `
     Where-Object {$_.Name -eq "Microsoft.SystemCenter.VirtualMachineManager"`
                    }))
{
    Add-PSSnapin -name Microsoft.SystemCenter.VirtualMachineManager
}

# Conectamos al servidor de SCVMM
$SCVMM = Get-VMMServer $VMM

# Recorremos todos los hosts de virtualización administrados por el servidor
# SCVMM
ForEach($HostSrv In (Get-VMHost |Sort-Object -Property HostCluster,Name))
{

    # Mostramos por pantalla el nombre del host actual
    $HostSrv.Name
    
    # Recorremos las máquinas virtuales que hospeda el host
    ForEach($VM In (Get-VM -VMHost $HostSrv | Sort-Object -Property Name))
    {
    
        # Mostramos el nombre de la máquina virtual actual, con un tabulador
        # para así ver que pertenece al host actual
        "`t" + $VM.Name
        
        # Montamos la información de la máquina en la variable de salida
        $Salida = $Salida + `
                  [string] $HostSrv.HostCluster + "`t"  + `
                  $HostSrv.Name + "`t"  + `
                  $VM.VirtualizationPlatform + "`t"  + `
                  $VM.Name + "`t"  + `
                  $VM.VMCPath + "`t"  + `
                  $VM.Memory + "`t"  + `
                  $VM.CPUCount + "`t"  + `
                  $VM.CPUType + "`t"  + `
                  $VM.VirtualNetworkAdapters + "`t"  + `
                  $VM.VirtualDiskDrives + "`t"  + `
                  $VM.VirtualHardDisks + "`t"  + `
                  $VM.Location + "`r`n"


    } # $VM

} # $HostSrv

# Montamos la salida agregando los encabezados de tabla.
$Salida = "Cluster`tHost`tPlataforma`tVM`tRuta`tMemoria`tCPUs`tTipoCPU`t" + `
          "NICs`tDiscos`tHDs`tLocalización`r`n" + `
          $Salida

# Volcamos la salida al fichero
$Salida > $Fichero                      

3 comentarios to “Script Powershell para listar las máquinas virtuales gestionadas por un servidor de System Center Virtual Machine Manager 2008”

  1. Hola Fernando,

    es un Script excelente, funciona de maravilla.

    Los comentarios me han servido de mucho para entender como funciona.

    Un saludo
    Simón

  2. Yo estaba interesado en conocer el estado de cada máquina virtual, le he hecho un par de modificaciones en el bucle que recorre las máquinas virtuales del host.

    # Recorremos las máquinas virtuales que hospeda el host
    ForEach($VM In (Get-VM -VMHost $HostSrv | Sort-Object -Property Name))
    {

    # Mostramos el nombre de la máquina virtual actual, con un tabulador
    # para así ver que pertenece al host actual, su estado y la cadena
    # de caracteres que guarda el estado
    “`t” + $VM.Status + “`t” + $VM.Name

    # Montamos la información de la máquina en la variable de salida
    $Salida = $Salida + `
    $HostSrv.Name + “;” + `
    $VM.Name + “;” + `
    $VM.Status + “” + “`r`n”

    } # $VM

    Nada más,

    Un saludo
    Simón

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: