Búsqueda de sitios web

PowerShell: obtener espacio libre en disco


A menudo resulta útil conocer el tamaño exacto y el espacio libre de todos los discos del sistema.

La información se puede utilizar para el seguimiento continuo de los recursos disponibles o como información "única" cuando se instala nuevo software.

La siguiente función de PowerShell, Get-DiskSize, creará un objeto que contiene la información del espacio libre en el disco.

Como la información está envuelta en un objeto, es fácil realizar un procesamiento adicional de la información.

El código está anidado en una función de PowerShell para que pueda trasladarlo fácilmente a su propio código.

Function Get-DiskSize {
  $Disks = @()
  $DiskObjects = Get-WmiObject -namespace "root/cimv2" -query "SELECT Name, Capacity, FreeSpace FROM Win32_Volume"
  $DiskObjects | % {
    $Disk = New-Object PSObject -Property @{
      Name           = $_.Name
      Capacity       = [math]::Round($_.Capacity / 1073741824, 2)
      FreeSpace      = [math]::Round($_.FreeSpace / 1073741824, 2)
      FreePercentage = [math]::Round($_.FreeSpace / $_.Capacity * 100, 1)
    }
    $Disks += $Disk
  }
  Write-Output $Disks | Sort-Object Name
}
Get-DiskSize | ft Name,@{L='Capacity (GB)';E={$_.Capacity}},@{L='FreeSpace (GB)';E={$_.FreeSpace}},@{L='FreePercentage (%)';E={$_.FreePercentage}}

El resultado del código será similar a este:

Name                                              Capacity (GB) FreeSpace (GB) FreePercentage (%)
----                                              ------------- -------------- ------------------
\\?\Volume{6e1a788e-0000-0000-0000-303de3000000}\          0.85           0.28               32.3
\\?\Volume{ab58b645-acea-11e4-81a2-806e6f6e6963}\          1.46           1.12               76.3
C:\                                                      907.49         207.16               22.8
Q:\                                                        21.7            8.2               37.8

Utilice la función y el objeto Discos de forma creativa como mejor le parezca. Aquí hay un ejemplo para comenzar:

PS C:\> $SysDisk = Get-DiskSize | ? {$_.Name -eq 'c:\'}
PS C:\> $SysDisk

Capacity Name FreePercentage FreeSpace
-------- ---- -------------- ---------
  907.49 C:\            22.8    207.04


PS C:\> Write-Host Drive $SysDisk.Name has $SysDisk.FreePercentage percent free disk
Drive C:\ has 22.8 percent free disk

Artículos relacionados