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

如何使用PowerShell整合进程?附Teams内存监控脚本

PowerShell 实现Teams进程整合统计

你需要实现的是将多个Teams进程的内存使用数据整合汇总,以下是具体实现方案:

原脚本回顾

你已编写的脚本可列出单个Teams进程的内存数据:

$processtest = Get-process -name teams | Sort-Object -Property ws -Descending | Select-Object processname, @{Name="Mem Usage(MB)";Expression={[math]::round($_.ws / 1mb*2)}}, @{Name="Mem Usage(%)";Expression={[math]::round($_.ws / 1mb*2)/100}}

输出为每个Teams进程的单独内存数据:

ProcessName Mem Usage(MB) Mem Usage(%)
----------- ------------- ------------
Teams                 954         9.54
Teams                 930          9.3
Teams                 310          3.1
Teams                 299         2.99
Teams                 274         2.74
Teams                 168         1.68
Teams                 152         1.52
Teams                  37         0.37
Teams                  37         0.37
Teams                  25         0.25

整合进程的实现脚本

以下脚本会汇总所有Teams进程的总内存使用量及总内存使用率:

# 获取所有Teams进程,避免进程不存在时报错
$allTeamsProcesses = Get-Process -Name Teams -ErrorAction SilentlyContinue

# 整合统计总内存数据
$integratedTeamsStats = $allTeamsProcesses | Group-Object -Property ProcessName | Select-Object Name,
    @{Name="总内存使用(MB)"; Expression={
        if ($_.Group.Count -gt 0) {
            [math]::round(($_.Group | Measure-Object -Property WS -Sum).Sum / 1MB, 2)
        } else {
            0
        }
    }},
    @{Name="总内存使用率(%)"; Expression={
        if ($_.Group.Count -gt 0) {
            $systemTotalMemMB = (Get-CimInstance Win32_OperatingSystem).TotalVisibleMemorySize / 1KB
            $totalTeamsMemMB = ($_.Group | Measure-Object -Property WS -Sum).Sum / 1MB
            [math]::round( ($totalTeamsMemMB / $systemTotalMemMB) * 100, 2 )
        } else {
            0
        }
    }}

# 输出整合后的结果
$integratedTeamsStats

脚本说明

  • Get-Process -Name Teams -ErrorAction SilentlyContinue:获取所有Teams进程,同时处理进程不存在的报错情况
  • Group-Object -Property ProcessName:将所有Teams进程按名称分组(此处仅包含Teams组)
  • 总内存使用(MB):通过Measure-Object -Property WS -Sum计算所有Teams进程的内存总和,转换为MB并保留两位小数
  • 总内存使用率(%):先获取系统总物理内存,再用Teams总内存除以系统总内存并转换为百分比,保留两位小数

整合后的输出示例

Name  总内存使用(MB) 总内存使用率(%)
----  ------------- --------------
Teams         3186           15.93

结合重启逻辑

你可将整合后的统计结果与已有的重启代码结合,示例如下:

$memoryThreshold = 90 # 设置内存使用率阈值

if ($integratedTeamsStats.'总内存使用率(%)' -ge $memoryThreshold) {
    # 强制停止所有Teams进程
    Stop-Process -Name Teams -Force -ErrorAction SilentlyContinue
    # 等待5秒后重启Teams
    Start-Sleep -Seconds 5
    Start-Process -Path "$env:LOCALAPPDATA\Microsoft\Teams\current\Teams.exe"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:40:26