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

如何实现多语言环境下Network Discovery状态的通用检测?

解决Network Discovery跨语言检测问题

方法1:直接查询防火墙配置文件的NetworkDiscovery状态

这是最可靠的跨语言方案,Get-NetFirewallProfile的NetworkDiscovery属性是系统内部的非本地化标识,完全不受系统语言影响,能直接获取Network Discovery的全局状态。

命令示例:

# 查看所有网络配置文件的NetworkDiscovery状态
Get-NetFirewallProfile | Select-Object Name, NetworkDiscovery

# 检测是否有至少一个配置文件启用了Network Discovery
$isEnabled = (Get-NetFirewallProfile | Where-Object { $_.NetworkDiscovery -eq 'Enabled' }).Count -gt 0
if ($isEnabled) {
    Write-Host "Network Discovery已启用"
} else {
    Write-Host "Network Discovery未启用"
}

NetworkDiscovery的可选值为Enabled、Disabled、NotConfigured,可根据需求调整判断逻辑。

方法2:通过防火墙规则的Group属性替代DisplayGroup

如果需要针对具体的防火墙规则组进行检测,不要使用本地化的DisplayGroup,改用非本地化的Group属性——它的取值固定为英文Network Discovery,不会随系统语言变化。

命令示例:

# 查询Group为'Network Discovery'且已启用的规则
Get-NetFirewallRule -Group 'Network Discovery' -Enabled True

# 验证是否存在已启用的Network Discovery规则
$hasActiveRules = (Get-NetFirewallRule -Group 'Network Discovery' -Enabled True -ErrorAction SilentlyContinue).Count -gt 0

原理说明

Group是防火墙规则组的内部标识符,不参与本地化;而DisplayGroup是面向用户的显示名称,会随系统语言翻译,这就是原命令在法语系统失效的核心原因。

方案选择建议

  • 优先用方法1:直接获取全局状态,无需遍历规则,代码更简洁,结果更准确。
  • 方法2适合需要精细检查单条规则的场景,可配合规则的Name属性(同样是非本地化的)进一步筛选特定规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:03:23