Comprobar Hyper-V desde Pester
PowerShell
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 especificados 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:
Happy scripting!