检查Disks Powershell

时间:2016-07-25 18:46:44

标签: powershell diskspace

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

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

在表格中生成我想要的数据。

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

切勿在之前使用Format-* cmdlet ,在这些位置需要实际格式化并向用户显示数据。

要抓取对象的属性而不格式化它,请使用Select-Object

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

要获得可用空间的百分比,您可以使用a calculated property

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

由于Get-WmiObject Win32_LogicalDisk每个磁盘返回一个对象 $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)"
    }
}

答案 1 :(得分:0)

试试这个

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