检查磁盘 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
我正在创建一个 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