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

PowerCLI中为Get-Datastore输出添加主机名的技术咨询

解决PowerCLI获取主机关联存储容量&可用空间的问题

嘿,作为PowerCLI新手碰到这种字段调整的问题太正常啦!我来帮你把存储对应的主机名加到输出里~

先说说你原命令的两个小问题:

  • 你用Get-Datastore拿到的存储对象其实已经包含了关联的VM主机信息,但你没把它提取出来,所以默认只显示存储的Name
  • 排序部分的写法有点问题,两次Sort-Property会覆盖前一次的排序,而且后面的$disk放在管道里是多余的

直接给你修正后的命令,完美满足你的需求:

Get-VMHost | Get-Datastore | 
    Sort-Object -Property CapacityGB, FreeSpaceGB |  # 先按容量排序,再按可用空间排,顺序可以调换
    Select-Object @{Name='HOSTNAME'; Expression={$_.VMHost.Name}}, FreeSpaceGB, CapacityGB |
    Export-Csv -Path .\DiskStats.csv -NoTypeInformation

我给你拆解开解释下关键部分:

  • 计算属性提取主机名:@{Name='HOSTNAME'; Expression={$_.VMHost.Name}}这行是核心,它把每个存储关联的VM主机名称提取出来,并重命名为你想要的HOSTNAME列,替换掉原来的存储Name
  • 用Export-Csv替代Out-File:Export-Csv输出的是标准CSV格式,比Out-File的纯文本表格更实用,-NoTypeInformation会去掉CSV开头的类型注释行,让结果更干净
  • 修正排序逻辑:把两次Sort-Property合并成一次,指定多个排序属性,这样不会出现排序被覆盖的问题

额外补充个小场景:如果你的存储挂载在多台ESXi主机上,上面的命令会为每个主机-存储组合输出一行。要是你想每个存储只显示一行,同时列出所有关联的主机,只需要把主机名的表达式改成这样:

@{Name='HOSTNAME'; Expression={$_.VMHosts.Name -join ','}}

这样多个主机名会用逗号分隔在同一个单元格里~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:24:52