Comprobar Hyper-V desde Pester

Pester

Hace un tiempo escribí un post sobre que era Pester y como funcionaba este gran proyecto dentro de PowerShell.

Básicamente, Pester es un framework de testing unitario, que permite comprobar el correcto funcionamiento de cierto código de forma aislada.

En esta oportunidad, quiero compartir un pequeño test para comprobar Hyper-V desde Pester. Obteniendo como resultado de la ejecución del mismo si lo servidores específicados se encuentran activos.

Test

Para ello vamos a definir el siguiente bloque de código que enlista y describe los componentes que son parte activa del servidor y las comprobaciones necesarias:

#Requires -RunAsAdministrator
#Requires -Modules Pester
#Requires -Version 4.0

<#
.Synopsis
   Test de validación operativa para Microsoft Hyper-V
.DESCRIPTION
   Se requiere que la cuenta que ejecuta el test tenga privilegios administrativos locales sobre los servidores especificados. 
   .EXAMPLE
   Invoke-Pester -Script .\HyperV.Tests.ps1
.NOTES
   Ejecutar bajo la propia responsabilidad
.FUNCTIONALITY
   Test de validación funcional
#>

Describe "Basic validation of the Hyper-V servers" {
    $Servers = @('HV-01','HV-02')

    foreach ($ComputerName in $Servers) {
    $Session = New-PSSession -ComputerName $ComputerName

    It "The Hyper-V VM Management service on $ComputerName should be running" {
        (Invoke-Command -Session $Session {Get-Service -Name  vmms}).status |
        Should be 'Running'
    }

    It "The Windows Management Instrumentation service on $ComputerName should be running" {
        (Invoke-Command -Session $Session {Get-Service -Name winmgmt}).status  |
        Should be 'Running'
    }

    It "The Get-VMHost cmdlet on $ComputerName should not throw any errors" {
        {Invoke-Command -Session $Session {Get-VMHost}} |
        Should Not Throw
    }

    It "The Get-VM cmdlet on $ComputerName should not throw any errors" {
        {Invoke-Command -Session $Session {Get-VM}} |
        Should Not Throw
    }


    Remove-PSSession -Session $Session

    }
}

Al inicio del script se detalla el módulo requerido, versión y permisos necesarios para ser ejecutado.

Posteriormente quiero compartir el resultado de la ejecución del test en mi Notebook, ya que tiene el rol de Hyper-V habilitado, resultando la siguiente salida en consola:

Comprobar Hyper-V desde Pester

Saludos,

Comments