Servidores: Monitorizar espacio en disco con powershell

Hace ya un tiempo se nos ocurrio implementar una serie de monitorizaciones de nuestra infraestructura para estar seguros que todo esta ok.
A quien no se le ha llenado el disco de algun servidor y ha provocado la caida de algun servicio?
Con un sencillo script podemos revisar el almacenamiento de los servidores que nos interesen.

Creamos un fichero de texto (discos.ini) con la lista de servidores:

Servidor2 C:,E:
Servidor3 C:
Servidor4 E:
Servidor5 *

Y el siguiente script en powershell que conectara con los servidores y recuperará la informacion via WMI de sus discos duros:
$archivoini="discos.ini"
$linea=get-content($archivoini)
$linea|%{
 $campo=$_.split(" ") #separo los servicios en el ini con Tabulador
 $server=$campo[0]
 $strunidades=$campo[1]
 if ($strunidades -ne "*")
  {
  $intunidades=$strunidades.length - $($strunidades -replace(",")).length
  $unidad=$strunidades.split(",")
  $unidades=@()
  for ($a=0;$a -le $intunidades; $a++){$unidades+=$unidad[$a]}
  } 
$Disks = gwmi –computername $Server win32_logicaldisk -filter "drivetype=3"  
    foreach ($Disk in $Disks)  
    {
 if ($unidades -contains $Disk.deviceid -or $strunidades -eq "*")
  {
        $Size = "Size {0:0.0} GB" -f ($Disk.Size/1GB)
  $strFreeSpace = "Free Space {0:0.0} GB" -f ($Disk.FreeSpace/1GB)
        $FreeSpace = $Disk.FreeSpace/1GB
        $Used = ([int64]$Disk.size - [int64]$Disk.freespace) 
        $Percent = ($Used * 100.0)/$Disk.Size 
        $Percent = "{0:N0}" -f $Percent
  $percent=[int]$percent
        #write-host "porcentaje $percent - espaciolibre $freespace"
  if ($Percent -gt 85 -and $FreeSpace -lt 5)
   {
   $estado=0 #0=ERROR
   write-host $idserv "$Server $($Disk.deviceid) $Size $strFreeSpace $Percent% <-----warning data-blogger-escaped-del="" data-blogger-escaped-else="" data-blogger-escaped-ercent="" data-blogger-escaped-erver="" data-blogger-escaped-espacio="" data-blogger-escaped-fichero="" data-blogger-escaped-fin="" data-blogger-escaped-for="" data-blogger-escaped-idserv="" data-blogger-escaped-if="" data-blogger-escaped-ini="" data-blogger-escaped-isk.deviceid="" data-blogger-escaped-ize="" data-blogger-escaped-libre="" data-blogger-escaped-poco="" data-blogger-escaped-pre="" data-blogger-escaped-strfreespace="" data-blogger-escaped-unidades="" data-blogger-escaped-write-host="">
Podemos finalizar el script con un envio de correo si $estado=0 o guardar la salida en un fichero (out-file) en vez de sacarla por pantalla.

Comentarios

  1. Tengo el siguiente error con el script.

    Unexpected token ':N0' in expression or statement.
    At C:\Scripts\espacio libre\Disk_space2.ps1:19 char:28
    + $Size = "Size {0:N0 <<<< } GB" -f +($Disk.Size/1GB)
    + CategoryInfo : ParserError: (:N0:String) [], ParseException
    + FullyQualifiedErrorId : UnexpectedToken


    Puedes comentar ?


    ResponderEliminar

Publicar un comentario