76
En el mundo actual impulsado por la tecnología, la gestión eficiente del espacio en disco es fundamental para garantizar el buen funcionamiento de sus sistemas informáticos o servidores. A medida que los archivos y las aplicaciones continúan acumulándose, es esencial monitorear y analizar el espacio en disco con regularidad.
Afortunadamente, PowerShell, un poderoso 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 el disco en sus máquinas con Windows.
PowerShell Comprobar espacio en disco: Obtener volumen
El Obtener volumen cmdlet en PowerShell le permite recuperar información sobre los volúmenes de su computadora (unidades lógicas).
Compruebe 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 lo ayudará a identificar qué volúmenes se están quedando sin espacio en disco.
Compruebe 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 de espacio libre en disco en la unidad D.
Get-Volume -DriveLetter D
Compruebe 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 solo 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 los Tipo de unidad parámetro que coincide con la palabra ‘Fijado‘.
Get-Volume | Where-Object {$_.DriveType -eq 'Fixed'}
Compruebe el espacio libre en disco en volúmenes con letras de unidad asignadas
Otra forma de filtrar los resultados es mostrar solo unidades fijas con letras de unidad asignadas. Tome el comando de muestra en el ejemplo anterior. Pero esta vez, agregue otra condición para mostrar solo volúmenes con letras de unidad no vacías.
Get-Volume | Where-Object {$_.DriveType -eq 'Fixed' -and $_.DriveLetter}
Verificación de espacio en disco de PowerShell: Get-PSDrive
Otro cmdlet útil para verificar el espacio en disco es Obtener PSDrive. Mientras Obtener volumen es específico para volúmenes, Obtener PSDrive proporciona información sobre todas las unidades disponibles, incluidas las unidades del sistema de archivos y las unidades de registro.
Compruebe el espacio libre en disco en todas las unidades
Ejecutar este comando le dará una lista de unidades y sus propiedades, incluido el espacio libre disponible.
Get-PSDrive
Compruebe el espacio libre en disco solo en unidades de sistema de archivos
Pero como puede ver, el comando devolvió todas las unidades de PowerShell. Pero sólo estamos interesados en el sistema de archivos proveedor. Para obtener solo el sistema de archivos unidades, usemos el -PSProvider parámetro.
Get-PSDrive -PSProvider FileSystem
Compruebe 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 con el -Nombre parámetro.
Get-PSDrive -Name C
Comprobación de espacio en disco de PowerShell: clase Win32_LogicalDisk
WMI (Instrumentación de administración de Windows) es una característica poderosa de Windows que le permite acceder a la información del sistema, local o remota. En él, hay clases que exponen esta información del sistema que puedes consultar.
Una de esas clases es la Disco lógico Win32_ class, 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 el origen de datos subyacente es el mismo. Sin embargo, Obtener WmiObject es el modelo más antiguo y Microsoft avanza hacia modelos basados en CIM. Pero para este tutorial, puede usar cualquier comando.
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 .)
Tenga en cuenta que los valores de FreeSpace y Size 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 Disco lógico Win32_ La clase no devuelve unidades asignadas a la red en equipos remotos. Para obtener unidades asignadas en máquinas remotas, use el Win32_MappedLogicalDisk clase en su lugar.
Compruebe el espacio libre en disco con el filtro WMI
Si bien una máquina puede tener diferentes tipos de unidades, la supervisión solo tiene sentido en los discos locales. Al ejecutar la consulta de verificación de espacio en disco de PowerShell con Obtener WMIObject o Obtener CIMInstancepuede filtrar el tipo de unidad para 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 -Filtrar “Tipo de unidad = 3” filtrar.
Get-WmiObject -Class Win32_LogicalDisk -ComputerName DC2 -Filter "DriveType = 3" | ` Format-Table SystemName, DeviceID, DriveType, VolumeName, Size, FreeSpace -AutoSize
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 el trabajo 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 espacio en disco. También puede descargar este script desde este Esencia. Esta función puede recuperar la información de espacio en disco en computadoras locales y remotas y mostrarlos 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 usar esta función de verificació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 a donde guardó el script.
Cuando ejecuta el script sin el -Nombre de la computadora parámetro, solo se consultará el equipo local de forma predeterminada.
.Get-DiskSpace.ps1 | Format-Table
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
¿Qué sucede si especifica un nombre de equipo incorrecto o inexistente? El script mostrará un error y omitirá esa computadora. Por ejemplo, incluí un DC3 en la consulta, pero no existe.
También puede enviar el resultado a un CSV, JSON, texto y otros formatos de archivo mediante la canalización a los cmdlets de conversión correspondientes, como, Exportar-Csv, ConvertTo-JSON, Fuera de archivoetc. Vaya más lejos 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 del espacio en disco en sus máquinas con Windows sin esfuerzo, asegurándose de que nunca se quede sin espacio y mantenga un rendimiento óptimo del sistema.
En conclusión, PowerShell es una herramienta versátil que simplifica la administración y el monitoreo 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 eficaz.
Vigilar el espacio en disco es una parte esencial del mantenimiento del sistema, y con PowerShell, se vuelve pan comido. ¡Feliz guion!