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

PowerShell按子字符串分组统计VMware虚拟机数组项数量

统计PowerCLI中VM按前缀分组的数量

刚好我经常处理这类VM批量统计的需求,给你几个实用的方案:

基础方案:按第一个连字符提取前缀统计

首先你已经拿到了目标数据存储上的VM数组:

$items = Get-Datastore "YourDatastoreName" | Get-VM

接下来用Group-Object配合字符串拆分提取前缀,直接统计数量:

$items | Group-Object -Property { $_.Name.Split('-')[0] } | Select-Object Name, Count

这段代码的逻辑很清晰:

  • $_.Name.Split('-')[0] 把每个VM的名称按连字符拆分,取第一部分作为分组依据
  • Group-Object 按这个前缀完成分组
  • Select-Object 只展示前缀(Name列)和对应的VM数量(Count列)

更精准的方案:用正则匹配3/4字符前缀

如果担心有些VM名称不符合“3/4字符+连字符”的格式(比如没有连字符或者前缀长度不对),可以用正则表达式精准匹配:

$items | Group-Object -Property { 
    # 匹配开头3或4个字母/数字加连字符的前缀
    if ($_.Name -match '^([A-Za-z0-9]{3,4})-') { 
        $matches[1] 
    } else { 
        '无匹配前缀' 
    }
} | Select-Object Name, Count

这个正则^([A-Za-z0-9]{3,4})-会严格匹配名称开头的3或4个字母/数字,后面跟着连字符的情况,避免误统计不符合规则的VM。

友好输出:格式化表格

如果想要更易读的表格格式,把Select-Object换成Format-Table即可:

$items | Group-Object -Property { $_.Name.Split('-')[0] } | Format-Table Name, Count -AutoSize

这样输出的内容会自动调整列宽,看起来更清爽。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:22:20