Volver al código PowerShell

Revisar el espacio en disco y avisar antes de que se llene

Un reporte de todas las unidades con su porcentaje libre, que termina con error si alguna baja del umbral.

El problema

Un servidor con el disco lleno deja de funcionar sin previo aviso. Hay que revisarlo todos los días y enterarse cuando queda poco, no cuando ya no queda.

PowerShell
$umbral = 15   # porcentaje libre mínimo

$discos = Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" | ForEach-Object {
    [pscustomobject]@{
        Unidad   = $_.DeviceID
        TotalGB  = [math]::Round($_.Size / 1GB, 1)
        LibreGB  = [math]::Round($_.FreeSpace / 1GB, 1)
        LibrePct = [math]::Round($_.FreeSpace / $_.Size * 100, 1)
    }
}

$discos | Format-Table -AutoSize

$criticos = $discos | Where-Object { $_.LibrePct -lt $umbral }
if ($criticos) {
    $criticos | ForEach-Object { Write-Warning "$($_.Unidad) tiene solo $($_.LibrePct)% libre" }
    exit 1
}
Write-Host "Todos los discos por encima del $umbral% libre."

Por qué está escrito así

  1. Get-CimInstance con DriveType=3 trae solo discos fijos: ni unidades de red ni lectoras.
  2. Cada disco se convierte en un objeto con columnas calculadas; PowerShell trabaja con objetos, no con texto.
  3. 1GB es una constante del lenguaje: no hay que escribir 1073741824.
  4. exit 1 es lo que permite que el Programador de tareas u otra herramienta se entere de que algo anda mal.
Cómo probarlo

Guardalo como discos.ps1 y corré: powershell -File discos.ps1. Subí el umbral a 99 para ver la alerta.

Ojo con esto

Un porcentaje engaña en discos grandes: 15% de 4 TB son 600 GB libres. En esos casos conviene alertar por gigas libres, no por porcentaje.

Adaptalo a tu caso con IA

El botón copia este prompt con el código pegado debajo. Reemplazá los corchetes con lo tuyo y pegalo en ChatGPT, Claude, Gemini o Copilot.

El prompt
Tengo este script de PowerShell que revisa espacio en disco. Adaptalo para revisar estos servidores remotos: [LISTA DE SERVIDORES], alertar por porcentaje o por gigas libres según el tamaño del disco, y enviar el aviso por [CANAL: correo SMTP, Teams, webhook] solo cuando hay críticos. Que deje un CSV histórico por día para ver la tendencia. Lo voy a correr con el Programador de tareas.

Ejemplo escrito y revisado a mano.

Compartir

Comentarios

Todavía no hay comentarios. El primero puede ser el tuyo.

Solo texto, sin enlaces. No se pide correo. Los comentarios se revisan antes de publicarse.

¿Lo adaptaste a algo tuyo?

Contame qué resolviste con esto, o qué le faltó.

Seguí probando

Más código

Ver todos
Darinel Ortega En línea · respondo durante el día
Hoy
Hola. Acá no vendo nada: esto es para intercambiar conocimiento sobre tecnología.
Escribime lo que quieras — podés mandar texto, imágenes o documentos. Los mensajes llegan a mi consola y te respondo desde ahí.
Estás escribiendo fuera de horario. Te leo apenas empiece el día.

Conversación abierta para compartir conocimiento. Los mensajes llegan a mi consola y respondo desde ahí.

Agendemos una conversación

Elegí el día y la hora que te sirvan. Son treinta minutos, sin agenda comercial.

Videollamada

Para una videollamada, pedila por acá y te paso el enlace de la sesión.