如何让任意版本的新版Microsoft Teams通过Windows防火墙?
如何让任意版本的新版Microsoft Teams通过Windows防火墙?
这个问题确实戳中了新版Teams基于MSIX部署的一大痛点——每次更新都会生成带版本号的新路径,常规的防火墙路径规则根本追不上它的更新速度,接电话突然弹权限框确实烦死人!别慌,给你几个靠谱的解决办法:
方法一:用应用程序包规则(最推荐)
Windows防火墙原生支持针对应用程序包创建规则,不需要指定具体路径,完美适配MSIX的版本化更新机制:
- 按Win+R输入
wf.msc打开「Windows Defender防火墙高级设置」 - 右键左侧的「入站规则」,选择「新建规则」
- 规则类型选「程序」,点击下一步
- 选择「此程序包路径」,点击「浏览」——直接定位到
C:\Program Files\WindowsApps里任意一个MSTeams_xxxx文件夹(比如最新版本的那个),系统会自动识别对应的Teams应用包身份 - 接下来设置「允许连接」,勾选你需要的网络环境(域、专用、公网按需选择),给规则起个好记的名字(比如「允许新版Teams所有版本入站」)
- 确认创建后,不管Teams后续更新多少次,这个规则都会自动生效,因为它识别的是应用包的身份而非具体路径
方法二:用PowerShell脚本自动维护规则
如果需要批量处理或者定期更新规则,可以写个PowerShell脚本自动扫描所有Teams路径并创建规则:
# 获取WindowsApps下所有MSTeams版本文件夹 $teamsInstallPaths = Get-ChildItem "C:\Program Files\WindowsApps" -Filter "MSTeams_*" ` | Where-Object { $_.PSIsContainer } ` | Select-Object -ExpandProperty FullName # 遍历每个路径创建/更新防火墙规则 foreach ($path in $teamsInstallPaths) { $ruleSuffix = $path.Split('_')[-1] $ruleName = "Allow Microsoft Teams - Version $ruleSuffix" # 检查规则是否已存在,不存在则创建 if (-not (Get-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue)) { New-NetFirewallRule ` -DisplayName $ruleName ` -Direction Inbound ` -Program "$path\Teams.exe" ` -Action Allow ` -Profile Domain,Private ` -Enabled True } }
把这个脚本保存为.ps1文件,创建一个管理员权限的任务计划,设置成在用户登录时或Teams更新后自动运行,就能自动覆盖所有新的Teams版本路径。
方法三:域环境下用组策略统一部署
如果是企业域环境,直接通过组策略推送基于应用包的防火墙规则更省心:
- 在域控制器上打开「组策略管理控制台」
- 找到要部署的组织单元,创建或编辑组策略对象
- 定位到「计算机配置」→「Windows设置」→「安全设置」→「Windows Defender防火墙」→「入站规则」
- 新建规则,同样选择「程序」→「此程序包路径」,输入Teams的包全名(可以从客户端用
Get-AppxPackage MicrosoftTeams命令获取PackageFullName值) - 完成规则配置后,组策略会自动把规则推送给所有域内计算机,彻底解决用户端的权限弹窗问题
总结一下:单台电脑首选方法一,批量电脑用方法二的脚本自动化,域环境直接上组策略,这三个方案都能彻底解决新版Teams更新后防火墙规则失效的问题。
备注:内容来源于stack exchange,提问作者Admaine
相关产品推荐
相关产品推荐

