用于查找C驱动器总内存空间的powershell脚本

时间:2019-03-26 05:43:38

标签: powershell

我希望PowerShell脚本获得C驱动器的总内存空间和已用内存空间(以GB为单位),如果总空间小于200 GB,则打印磁盘空间应小于200。

gwmi win32_logicaldisk | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
$task=gwmi win32_logicaldisk | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
if($task.Size -lt 200)
{
Write-Host "Hard Disk Space is less than 200."
}
else
{
Write-Host "Hard Disk Space is greater than 200."
}

我在上面的代码中获得了所有驱动器空间,我只需要C驱动器信息,并且如果条件不能正常工作,有人可以帮助我解决这一问题。预先感谢

2 个答案:

答案 0 :(得分:1)

您可以使用Get-Volume cmdlet-

if (((Get-Volume -DriveLetter C).Size)/1GB -lt 200)
{
Write-Host "Hard Disk Space is less than 200."
}
else
{
Write-Host "Hard Disk Space is greater than 200."
}

答案 1 :(得分:0)

如果您需要在win7上运行此测试-即使使用ps5.1-也不能使用Get-Volume cmdlet。 [叹息... ]因此,这里是使用CMI / WMI的一种。

它做什么...

  • 设置最小可用空间阈值
  • 使用速度更快,不推荐使用的CIM信息获取驱动器C上的信息:
  • 仅在C:驱动器满足最小可用空间要求时返回信息
  • 使用[string]::IsNullOrEmpty()来查看结果中是否包含任何信息
  • 然后使用IF结构确定要显示的消息
  • 如果空间太小,它将使用Write-Warning cmdlet来显示漂亮的橙色文本[ grin ]

这是代码...

$MinFreeSpace_GB = 800

$CDriveMinFree = [string]::IsNullOrEmpty((Get-CimInstance -ClassName CIM_LogicalDisk |
    Where-Object {
        $_.DeviceID -eq 'C:' -and
        $_.FreeSpace -lt $MinFreeSpace_GB * 1GB
        }))

if ($CDriveMinFree)
    {
    'The C: drive has at least {0} GB free.' -f $MinFreeSpace_GB
    }
    else
    {
    Write-Warning ('Low free space on Drive C:!')
    }

我的600 GB空闲C:驱动器上的输出,测试阈值设置为800 ...

WARNING: Low free space on Drive C:!