En el mundo actual impulsado por la tecnología, administrar el espacio en disco de manera eficiente es crucial para garantizar el buen funcionamiento de sus sistemas informáticos o servidores. A medida que los archivos y aplicaciones continúan acumulándose, es esencial monitorear y analizar el espacio en disco con regularidad.

Afortunadamente, PowerShell, un potente lenguaje de secuencias de comandos y marco de automatización de Microsoft, proporciona varios métodos convenientes para verificar el espacio en disco sin esfuerzo.

En esta publicación de blog, exploraremos diferentes comandos y scripts de PowerShell para obtener espacio libre en disco en sus máquinas con Windows.

PowerShell comprueba el espacio en disco: obtener volumen

El Obtener volumen El cmdlet de PowerShell le permite recuperar información sobre los volúmenes de su computadora (unidades lógicas).

Verifique el espacio libre en disco en todos los volúmenes

Para verificar el espacio libre en disco de todos los volúmenes disponibles, abra una ventana de PowerShell y ejecute el siguiente comando:

Get-Volume

Este comando mostrará una lista detallada de todos los volúmenes, su capacidad, espacio libre y otra información esencial. El resultado le ayudará a identificar qué volúmenes se están quedando sin espacio en disco.

Verifique el espacio libre en disco en una letra de unidad específica

Al especificar la letra de la unidad, puede limitar el resultado a un volumen específico. Por ejemplo, el siguiente comando devuelve la información del espacio libre en disco en la unidad D.

Get-Volume -DriveLetter D

disco powershell gratis

Verifique el espacio libre en disco según el tipo de unidad

En la mayoría de los casos, la supervisión del espacio en disco sólo se aplica a los discos fijos. Con el cmdlet Where-Object, puede filtrar la salida para mostrar solo los discos fijos.

Este comando obtiene toda la información de los volúmenes y filtra la Tipo de unidad parámetro que coincide con la palabra ‘Fijado‘.

Get-Volume | Where-Object {$_.DriveType -eq 'Fixed'}

limpieza de disco powershell

Verifique el espacio libre en disco en volúmenes con letras de unidad asignadas

Otra forma de filtrar los resultados es mostrar sólo unidades fijas con letras de unidad asignadas. Tome el comando de muestra del ejemplo anterior. Pero esta vez, agregue otra condición para mostrar solo volúmenes con letras de unidad que no estén vacías.

Get-Volume | Where-Object {$_.DriveType -eq 'Fixed' -and $_.DriveLetter}

powershell limpiar espacio en disco

PowerShell comprueba el espacio en disco: Get-PSDrive

Otro cmdlet útil para comprobar el espacio en disco es Obtener-PSDrive. Mientras Obtener volumen es específico de volúmenes, Obtener-PSDrive proporciona información sobre todas las unidades disponibles, incluidas las unidades del sistema de archivos y las unidades de registro.

Verifique el espacio libre en disco en todas las unidades

Al ejecutar este comando, obtendrá una lista de unidades y sus propiedades, incluido el espacio libre disponible.

Get-PSDrive

Verifique el espacio libre en disco en todas las unidades

Verifique el espacio libre en disco solo en las unidades del sistema de archivos

Pero como puede ver, el comando devolvió todas las unidades de PowerShell. Pero sólo nos interesa el Sistema de archivos proveedor. Para obtener solo el Sistema de archivos unidades, usemos el -PSProvider parámetro.

Get-PSDrive -PSProvider FileSystem

Verifique el espacio libre en disco solo en las unidades del sistema de archivos

Verifique el espacio libre en disco en unidades específicas

También puede obtener espacio libre en disco para unidades específicas solo especificando la letra de la unidad usando el -Nombre parámetro.

Get-PSDrive -Name C

Verifique el espacio libre en disco en unidades específicas

PowerShell comprueba el espacio en disco: clase Win32_LogicalDisk

WMI (Instrumental de administración de Windows) es una característica poderosa de Windows que le permite acceder a información del sistema, local o remota. En él, hay clases que exponen información de este sistema que puedes consultar.

Una de esas clases es la Win32_LogicalDisk clase, que incluye el nombre del disco, el tamaño y el espacio libre. Puede consultar esta clase WMI usando Obtener-WmiObject o Obtener-CimInstance.

Ambos cmdlets producen el mismo resultado, dado que la fuente de datos subyacente es la misma. Sin embargo, Obtener-WmiObject es el modelo más antiguo y Microsoft está avanzando hacia modelos basados ​​en CIM. Pero para este tutorial, puedes usar cualquiera de los comandos.

Verifique el espacio libre en disco en una computadora local o remota

Por ejemplo, los siguientes comandos de verificación de espacio en disco de PowerShell consultan la información del disco desde la computadora remota llamada DC1.

Get-CimInstance -Class Win32_LogicalDisk -ComputerName DC1 | ` 
Format-Table SystemName, DeviceID, DriveType, VolumeName, Size, FreeSpace -AutoSize

Nota. Si consulta la computadora local, elimine el -Nombre de la computadora parámetro por completo o reemplace el nombre de la computadora con un punto (es decir, -Nombre de la computadora .)

Verifique el espacio libre en disco en una computadora local o remota

Tenga en cuenta que los valores de Espacio libre y Tamaño se muestran en bytes.

Verifique el espacio libre en disco en varias computadoras

También puede consultar varias máquinas a la vez especificando sus nombres de host en el -Nombre de la computadora parámetro. Por ejemplo, para consultar DC1 y DC2, el comando es:

Get-CimInstance -Class Win32_LogicalDisk -ComputerName DC1, DC2 | ` 
Format-Table SystemName, DeviceID, DriveType, VolumeName, Size, FreeSpace -AutoSize

Nota. El Win32_LogicalDisk La clase no devuelve unidades asignadas a la red en computadoras remotas. Para obtener unidades asignadas en máquinas remotas, utilice el Win32_MappedLogicalDisk clase en su lugar.

Obtener-CimInstance

Verifique el espacio libre en disco con el filtro WMI

Si bien una máquina puede tener diferentes tipos de unidades, la supervisión sólo tiene sentido en los discos locales. Al ejecutar la consulta de PowerShell, verifique el espacio en disco con Obtener-WMIObject o Obtener-CIMInstancepuede filtrar el tipo de unidad a devolver.

A continuación se muestra la lista de tipos de unidades disponibles:

  • 0 = Desconocido
  • 1 = Sin directorio raíz
  • 2 = Disco extraíble
  • 3 = Disco local
  • 4 = Unidad de red
  • 5 = Disco compacto
  • 6 = Disco RAM

Sabemos que el número de tipo de unidad fija o local es 3. Entonces podemos agregar el -Filtro “Tipo de unidad = 3” filtrar.

Get-WmiObject -Class Win32_LogicalDisk -ComputerName DC2 -Filter "DriveType = 3" | ` 
Format-Table SystemName, DeviceID, DriveType, VolumeName, Size, FreeSpace -AutoSize

Verifique el espacio libre en disco con el filtro WMI

Script de PowerShell para comprobar el espacio en disco en varios servidores

La ejecución manual de los comandos de verificación de espacio en disco de PowerShell es adecuada para trabajos ad hoc. Pero sería mejor convertir los comandos en un script o función reutilizable que cualquiera pueda usar sin modificar el código.

Aquí hay un script de PowerShell llamado Obtener-DiskSpace. También puedes descargar este script desde este Esencia. Esta función puede recuperar la información del espacio en disco en computadoras locales y remotas y mostrarla en un resultado fácil de entender.

Function Get-DiskSpace { 
[CmdletBinding()] 
param ( 
[Parameter()] 
[String[]] 
$ComputerName = $env:COMPUTERNAME 
) 

# Drive type lookup table 
$driveType = @{ 
0 = 'Unknown' 
1 = 'No Root Directory' 
2 = 'Removable Disk' 
3 = 'Local Disk' 
4 = 'Network Drive' 
5 = 'Compact Disc' 
6 = 'RAM Disk' 
} 

$result = [System.Collections.ArrayList]@() 
foreach ($computer in $ComputerName) { 
try { 
if ($localLogicalDisks = Get-CimInstance -Class Win32_LogicalDisk -ComputerName $computer -Property * -ErrorAction Stop) { 
$result.AddRange($localLogicalDisks) 
if (($localLogicalDisks.DriveType) -notcontains 4) { 
if ($mappedLogicalDisks = Get-CimInstance -Class Win32_MappedLogicalDisk -ComputerName $computer -Property * -ErrorAction Stop) { 
$result.AddRange($mappedLogicalDisks) 
} 
} 
} 
} 
catch { 
"[ERROR][$computer] : $($_.exception.message)" | Out-Default 
} 
} 
if ($result) { 
$result | ForEach-Object { 
[PSCustomObject]@{ 
ComputerName = $_.SystemName 
DeviceID = $_.DeviceID 
VolumeName = $_.VolumeName 
DriveType = $( 
if ($_.DriveType) { 
$driveType[$([int]$_.DriveType)] 
} 
else { 
$driveType[4] 
} 
) 
SizeGB = $([System.Math]::Round(($_.Size / 1GB), 2)) 
UsedSpaceGB = $([System.Math]::Round((($_.Size - $_.FreeSpace) / 1GB), 2)) 
FreeSpaceGB = $([System.Math]::Round(($_.FreeSpace / 1GB), 2)) 
FreeSpacePercent = $([System.Math]::Round((($_.FreeSpace / $_.Size) * 100), 2)) 
} 
} 
} 
}

¿Cómo utilizar esta función de comprobación de espacio en disco de PowerShell?

Guarde el script en su computadora y asígnele un nombre. Comprobar-DiskSpace.ps1. Abra PowerShell y cambie el directorio de trabajo donde guardó el script.

Cuando ejecuta el script sin el -Nombre de la computadora parámetro, solo se consultará la computadora local de forma predeterminada.

.\Get-DiskSpace.ps1 | Format-Table

Función de comprobación de espacio en disco de PowerShell

Para consultar una o más computadoras, especifique los nombres de las computadoras en el -Nombre de la computadora parámetro.

.\Get-DiskSpace.ps1 -ComputerName DC1,DC2 | Format-Table

obtener espacio en disco

¿Qué sucede si especifica un nombre de computadora incorrecto o inexistente? El script mostrará un error y omitirá esa computadora. Por ejemplo, incluí un DC3 en la consulta, pero no existe.

obtener espacio en disco powershell

También puede enviar el resultado a CSV, JSON, texto y otros formatos de archivo canalizando a los cmdlets de conversión correspondientes, como, Exportar-Csv, Convertir a JSON, Fuera de archivoetc. Vaya más allá exportando y formateando el informe en hermosos archivos HTML.

Conclusión

Con los comandos y secuencias de comandos de PowerShell anteriores, puede realizar un seguimiento sin esfuerzo del espacio en disco de sus máquinas con Windows, lo que garantiza que nunca se quedará sin espacio y mantendrá un rendimiento óptimo del sistema.

En conclusión, PowerShell es una herramienta versátil que simplifica la supervisión y gestión del espacio en disco. Ya sea que desee verificar volúmenes individuales, todas las unidades o varios servidores, PowerShell proporciona varios métodos para que el proceso sea eficiente y efectivo.

Vigilar el espacio en disco es una parte esencial del mantenimiento del sistema y, con PowerShell, se vuelve muy sencillo. ¡Feliz guión!

4/5 - (60 votos)

One Comment

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *