PowerShell:确定磁盘使用率是否超过80%
我正在尝试从所有磁盘获取磁盘使用率,然后如果任何磁盘的磁盘使用率超过80%,则发送电子邮件。使用现有的文章,我提出了以下建议,但无法筛选出使用率超过80%的磁盘。善良的灵魂能指引我吗?短暂性脑缺血发作PowerShell:确定磁盘使用率是否超过80%,powershell,filter,select-object,Powershell,Filter,Select Object,我正在尝试从所有磁盘获取磁盘使用率,然后如果任何磁盘的磁盘使用率超过80%,则发送电子邮件。使用现有的文章,我提出了以下建议,但无法筛选出使用率超过80%的磁盘。善良的灵魂能指引我吗?短暂性脑缺血发作 $size = @{label="Size(GB)";expression={[int]($_.Size/1GB)}} $freeSpace = @{label="FreeSpace(GB)";expression={[int]($_.FreeSpace/
$size = @{label="Size(GB)";expression={[int]($_.Size/1GB)}}
$freeSpace = @{label="FreeSpace(GB)";expression={[int]($_.FreeSpace/1GB)}}
$freeSpacePercent = @{label="FreeSpace(%)";expression={[int]($_.FreeSpace/$_.Size * 100)}}
Get-CimInstance -ClassName Win32_LogicalDisk |
Select-Object -Property DeviceID,VolumeName,$size,$freeSpace,$freeSpacePercent
只需添加一个Where对象{},类似于:
$size = @{label = "Size(GB)"; expression = {[int]($_.Size/1GB)}}
$freeSpace = @{label = "FreeSpace(GB)"; expression = {[int]($_.FreeSpace/1GB)}}
$freeSpacePercent = @{label = "FreeSpace(%)"; expression = {[int]($_.FreeSpace/$_.Size * 100)}}
Get-CimInstance -ClassName Win32_LogicalDisk |
Select-Object -Property DeviceID,VolumeName,$size,$freeSpace,$freeSpacePercent |
Where-Object{ $_."FreeSpace(%)" -le 20 }
注意,它小于20%。还要注意引号,因为您在属性名称中使用了特殊字符
此外,您正在向[Int]投出一个整数,该整数将大致位于整数的顶部。这可能是有意的,但当我做这类事情时,我喜欢使用“[数学]::Round函数。您可以更改表达式以获得以下结果:
$size = @{label="Size(GB)"; expression = { [Math]::Round( ($_.Size/1GB), 2 ) }}
$freeSpace = @{label="FreeSpace(GB)"; expression = { [Math]::Round( ($_.FreeSpace/1GB), 2 ) }}
$freeSpacePercent = @{label="FreeSpace(%)"; expression = { [Math]::Round( ($_.FreeSpace/$_.Size * 100), 2 ) }}
Get-CimInstance -ClassName Win32_LogicalDisk |
Select-Object -Property DeviceID,VolumeName,$size,$freeSpace,$freeSpacePercent
您可以使用MS PowerShellGallery.com上的资源之一,而不是从头开始,除非这是一个学习练习/家庭作业问题-;-}。在PowerShell会话中,只需键入。查找Module-Name'*disk*'或其中一个脚本,查找Script-Name'*disk*'Thx以获取powershellgallery的参考。我正在把它添加到我的收藏夹中。非常感谢史蒂文。。工作得很有魅力。我知道我必须使用where对象,但不完全在那里。