You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Get-WmiObject磁盘查询结果显示对应服务器主机名

修改PowerShell磁盘查询代码以显示主机名

原代码用于批量查询服务器磁盘剩余空间,但结果缺少对应主机名,可通过以下方式修改:

修改后的完整代码

$pc = Get-Content "C:\Users\user\Desktop\computers.txt"
$disks = Get-WmiObject -class "Win32_LogicalDisk" -namespace "root\CIMV2" -computername $pc 
$results = 
foreach ($disk in $disks)
{ 
    if ($disk.Size -gt 0)
    {
        $size = [math]::round($disk.Size/1GB, 0)
        $free = [math]::round($disk.FreeSpace/1GB, 0)
        [PSCustomObject]@{
            HostName = $disk.__SERVER  # 新增主机名字段
            Drive = $disk.Name
            "Free(%)" = "{0:P0}" -f ($free/$size)  # 修正百分比格式化顺序错误
            "FreeSpace(GB)" = $free  # 可选:新增实际剩余空间数值,便于直观查看
        }
    }
}
$results | Where-Object{( $_.Drive -ne "Z:") -and  ($_.Drive -ne "Y:") } | Where-Object{ [double]($_.Free(%) -replace '%','') -le 80 } | Out-GridView

关键修改说明

  • 新增主机名字段:Get-WmiObject返回的Win32_LogicalDisk对象自带__SERVER属性,直接将其加入自定义对象即可获取目标服务器的主机名,完全符合原代码的实现方式。
  • 修正百分比格式化错误:原代码中"{1:P0}" -f $free, ($free/$size)的占位符顺序错误,会导致显示的百分比与实际剩余比例不符,改为"{0:P0}" -f ($free/$size)才能正确显示剩余空间占总容量的百分比。
  • 调整过滤逻辑:由于Free(%)是带%符号的字符串格式,过滤时需要先去除%符号并转为数值类型,再与80比较,避免字符串比较导致的逻辑错误。

内容的提问来源于stack exchange,提问作者Delyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:20:34