首页 > 解决方案 > 计算可用磁盘空间百分比powershell

问题描述

我正在尝试获得磁盘管理中的免费百分比

$Diskmgmt = Get-Volume | select DriveLetter,FileSystemLabel,FileSystem,DriveType,HealthStatus,OperationalStatus,SizeRemaining,Size

foreach($dsk in $Diskmgmt)
{

    $dl = $dsk.DriveLetter
    $fsl = $dsk.FileSystemLabel
    $fs = $dsk.FileSystem
    $dt = $dsk.DriveType
    $hs = $dsk.HealthStatus
    $os = $dsk.OperationalStatus
    $sizer = [math]::round($dsk.SizeRemaining /1Gb, 2)
    $siz = [math]::round($dsk.Size /1Gb, 2)
    $PercentFree =  [Math]::Round(($sizer / $siz) * 100, 2)

但计算如下

Capacity     Free Space %Free
154.82 GB     200 GB     77 % 
0 GB          0 GB       77 % 
1.96 GB       6 GB       33 % 
0.15 GB       0.49 GB    31 % 
52.32 GB      99.51 GB   53 % 
11.19 GB      11.23 GB   100 % 
9.95 GB       10 GB      99 % 

如果我做得正确,请告诉我。

标签: powershell

解决方案


我猜你正在寻找这样的东西:

$props = @(
    'DriveLetter'
    'FileSystemLabel'
    'FileSystem'
    'DriveType'
    'HealthStatus'
    'OperationalStatus'
    @{
        Name = 'SizeRemaining'
        Expression = { "{0:N3} Gb" -f ($_.SizeRemaining/ 1Gb) }
    }
    @{
        Name = 'Size'
        Expression = { "{0:N3} Gb" -f ($_.Size / 1Gb) }
    }
    @{
        Name = '% Free'
        Expression = { "{0:P}" -f ($_.SizeRemaining / $_.Size) }
    }
)

Get-Volume -DriveLetter C, D | Select-Object $props | Format-Table

例如,这是它在我的笔记本电脑上的 DrivesC和外观D

DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining Size       % Free
----------- --------------- ---------- --------- ------------ ----------------- ------------- ----       ------
          D                 NTFS       Fixed     Healthy      OK                748.731 Gb    931.512 Gb 80.38%
          C                 NTFS       Fixed     Healthy      OK                170.959 Gb    236.764 Gb 72.21%

推荐阅读