Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell:确定磁盘使用率是否超过80%_Powershell_Filter_Select Object - Fatal编程技术网

PowerShell:确定磁盘使用率是否超过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/

我正在尝试从所有磁盘获取磁盘使用率,然后如果任何磁盘的磁盘使用率超过80%,则发送电子邮件。使用现有的文章,我提出了以下建议,但无法筛选出使用率超过80%的磁盘。善良的灵魂能指引我吗?短暂性脑缺血发作

$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对象,但不完全在那里。