检查磁盘 Powershell

Check Disks Powershell

我正在创建一个 powershell 程序,该程序应该检查计算机上所有驱动器的空闲磁盘 Space。我找到了

Get-WmiObject Win32_logicaldisk |Format-Table DeviceID, freeSpace, Size

它在 table.

中生成我想要的数据

但是我不确定如何在公式和程序的其他部分中使用每个特定元素。

最终我想检查计算机上的每个磁盘,看看它是否有超过 50% 的空闲,并相应地发出输出。

谢谢!

永远不要使用 Format-* cmdlet 之前 您需要实际格式化并将数据呈现给用户的时间点。

要在不格式化对象的情况下获取对象的属性,请使用 Select-Object:

$DiskInfo = Get-WmiObject Win32_logicaldisk |Select-Object DeviceID,FreeSpace,Size

要获得免费百分比 space,您可以使用 a calculated property:

$DiskInfo = Get-WmiObject Win32_logicaldisk |Select-Object DeviceID,@{L="FreeSpacePercentage";E={100*($_.FreeSpace/$_.Size)}},FreeSpace,Size

由于 Get-WmiObject Win32_LogicalDisk returns 每个磁盘 个对象 $DiskInfo 现在是一个对象数组,具有您选择的 4 个属性。

使用循环或 ForEach-Object cmdlet 遍历数组并相应地输出:

$DiskInfo |ForEach-Object {
    if($_.FreeSpacePercentage -gt 50){
        Write-Host "There's more than 50% free disk space on drive $($_.DeviceID)"
    }
}

试试这个

Get-WmiObject Win32_Volume -computername $env:computername |

Select-Object DriveType, @{Name="Size(GB)";Expression={"{0:N1}" -f($_.Capacity/1gb)}},@{Name="FreeSpace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}},@{Name="FreeSpacePerCent";Expression={"{0:N0}" -f(100*$_.freespace/$_.capacity)}} | 
Where-Object -FilterScript {[decimal]$_.FreeSpacePerCent -gt 50 -and $_.drivetype -eq 3} |
Sort-Object -property "FreeSpacePerCent" 
Format-Table