PoshCode Archive  Artifact [45d9dffa49]

Artifact 45d9dffa4916b2ac98e9c3d0f2ecfdd4e6038501f5b1675c3d7c704d2650dbe2:

  • File Cluster-Windows.ps1 — part of check-in [4827fc1928] at 2018-06-10 13:31:04 on branch trunk — Comprobamos el estado de los cluster de windows. (user: Pedro Genil size: 4964)

# encoding: utf-8
# api: powershell
# title: Cluster Windows
# description: Comprobamos el estado de los cluster de windows.
# version: 0.1
# type: module
# author: Pedro Genil
# license: CC0
# x-poshcode-id: 3787
# x-archived: 2012-11-30T08:52:43
# x-published: 2012-11-26T00:14:00
#
# A través de gwmi.
# Generamos el reporte y lo enviamos por email
#
#Comprobacion del estado de los clusters#
#########################################
# Add Exchange Admin module
If ((Get-PSSnapin | where {$_.Name -match "Exchange.Management"}) -eq $null)
{
	Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
}
#Fichero donde estan los nombres de los cluster
$activos= Get-content "F:\Scripts\Cluster\activos.txt"
#Creamos la tabla
$notabla = @()
$notabla += "<table width='200' border='2' cellspacing='0'>"
$contador = 0
 #Nos recorremos los activos
    foreach($activo in $activos)
    {
    $datos= gwmi -q "select * from MSCluster_ResourceGroup" -namespace root\mscluster -computername $activo -Authentication PacketPrivacy | select Name,InternalState,State,__SERVER 
    $name = gwmi -q "select * from MSCluster_ResourceGroup" -namespace root\mscluster -computername $activo -Authentication PacketPrivacy | where {$_.name -like "*CLUS*"} | Select name
    $namecluster= $name.name
    foreach ( $propdatos in $datos)
                        {
                          #Miramos el servidor activo de dicho cluster
                          $ClusterStatus = Get-ClusteredMailboxServerStatus -Identity $namecluster | Select -Expand OperationalMachines | ForEach {If($_ -like "*Owner*") {$_}}
                          $ActiveNode = $ClusterStatus.Split(" ")[0]
                          #miramos si coincide el activo con el que tiene que ser
                          if ($ActiveNode -eq $propdatos.__SERVER)
                              {
                              #Miramos si algun recurso se encuentra offline
                              if ($propdatos.name -ne "Available Storage")
                              {
                                if ($propdatos.internalstate -eq "Offline")
                                    {
                                        $notabla += "<tr><td>" + $propdatos.name + "</td><td><font color='red'>" +  $propdatos.internalstate + "</font></td><td>" + $activeNode +"</td></tr>"
                                        $contador = $contador + 1
                                    } 
                                    #Todo está correcto                    
                                else
                                    {
                                    if ($contador -gt 0)
                                    {
                                        $notabla += "<tr><TH COLSPAN=3> <font color='blue'>" + $namecluster + "</th></font></tr>"
                                        
                                     }   
                                    }
                              }
                              } 
                              #Si no coincide
                           else
                               { 
                               
                               $contador = $contador + 1 
                               
                               if ($propdatos.name -ne "Available Storage")
                               {
                               if ($propdatos.internalstate -eq "Offline")
                                    {                                       
                                        
                                        $notabla += "<tr><td>" + $propdatos.name + "</td><td><font color='red'>" +  $propdatos.internalstate + "</font></td><td BGCOLOR='red'>" + $activeNode +"</td></tr>"
                                    }                      
                                else
                                    {
                                        
                                        $notabla += "<tr><td>" + $propdatos.name + "</td><td><font color='red'>" +  $propdatos.internalstate + "</font></td><td BGCOLOR='red'>" + $activeNode +"</td></tr>"
                                    }
                               }
                              }
                                 
                              
                        }
       }#Cerramos los activos      

$notabla += "</table><br>" 
$notabla > estado.html
if ($contador -gt 0)
{
#Terminada la recofida de datos, lo mandamos por email               
    $smtpServer = "xx.xx.xx.xx"
	$smtpFrom = "Cluster Windows <email@dominio.es>"
	$smtpTo = "email2@dominio.es"
    $message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
	$message.Subject = "Chequeo Cluster Windows"
	$message.IsBodyHTML = $true
    $message.Body = $notabla
	$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
	$smtp.Send($message)
}