jueves, 9 de febrero de 2017

Conocer espacio libre en Discos Duros con powershell

Surge la nececidad de conocer el  espacio libre en Discos Duros de un listado de servidores con sistemas operativos windows, es por esto que recurrimos a con powershell y sin importar la cantidad de servidores todo esto se logra con una simple linea de codigo:

Get-WMIObject Win32_LogicalDisk  -ComputerName (Get-Content all.txt) | Where-Object {$_.DriveType -match "3"} | Where-Object {$_.FreeSpace -lt 1000GB} | Format-Table PsComputerName,deviceID,Size,FreeSpace | tee -filePath estado.txt


¿como funciona?

El cmdletGet-WMIObject realiza la captura de datos de Win32_LogicalDisk (todas la unidades del equipo, discos duros, unidades de DVD, Blue-ray, etc..) del listado especificado por -ComputerName en el archivo de texto all.txt (Get-Content all.txt). 
En el archivo all.txt se coloca el listado de hostname de equipos a consultar uno debajo del otro (o listado de IP's).
Luego se limita la busqueda con  Where-Object {$_.DriveType -match "3"} a las unidades de tipo Hard Disk y se limita con  Where-Object {$_.FreeSpace -lt 1000GB} a que solo muestre los resultados de espacio libre menor al que indiquemos, en este caso esta menos a una Tera mas o menos  -lt 1000GB, yo lo dejo en 10GB el cual es un umbral de espacio para empezar a tener cuidado en los servidores que se estan administrando, pero cada quien pone el valor de su conveniencia, y si quitan esta ultima linea mostrara el listado sin importar espacio libre.
Ahora con  Format-Table PsComputerName,deviceID,Size,FreeSpace damos el formato de salida de los datos que queremos y por ultimo con tee -filePath estado.txt exportamos nuestro datos encontrados al archivo estado.txt,


Ahora recordarles que powershell en equipos de escritorio viene con una politica de restriccion restringida por lo cual lo primero que hacemos es abrir powershell en Run As administrator y ejecutamos la siguiente linea:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Ahora podemos descargar los siguientes archivos en donde se encontraran los siguientes Archivos:

  • all.txt                   Archivo donde se debe colocar el listado de equipos a revisar
  • discos.ps1           Archivo de PowerShell listo para ejecutar modificar tamaño a buscar
  • discos.xlsx          Archivo de excel el cual importa los datos de estado.txt
  • estado.txt           Archivo que genera el Script de powershell con los resultados
Descargar zip con archivos

Se deben ubicar los archivos en la misma carpeta (se puede crear una carpeta llamada discos en C:\)
Se abre PowerShell y nos ubicamos dentro de la carpeta con

cd c:\discos

y ejecutamos nuestro script con

.\discos.ps1

Luego abrimos el archivo de Excel y desde alli actualizamos los datos desde la pestaña Datos y la opcion Actualizar todo


Luego seleccionamos nuestro archivo generado estado.txt e importamos



Despues de realizar la importacion arrastramos la formula de la celda E4 hasta el final de nuestra lista de datos.


Nos arrojara el resultado en porcentaje de espacio libre con escala de color de acuerdo a los parametros establecido en los cuales apareceran en rojo los valores de menor valor.


Espero a alguno le sea util
¡Hasta la proxima!

 "Si te fue útil la información HAZ CLICK EN LA PUBLICIDAD DE GOOGLE" visitando nuestros anunciantes, agradeces nuestro trabajo...