如何检查远程计算机的Network Discovery(网络发现)启用状态?
检查Windows网络发现/文件和打印机共享状态的最优方法
我来帮你捋清楚这个问题——其实网络发现是一组防火墙规则的集合,你之前用find命令模糊匹配关键词,才会拉出一堆无关规则导致混乱。下面几个方法能精准判断功能状态:
一、用PowerShell直接查看规则组状态
这是最直观的方案,直接按规则组过滤,能清晰看到该组下所有规则的启用情况:
检查网络发现状态
Get-NetFirewallRule -DisplayGroup "Network Discovery" | Select-Object Name, DisplayName, Enabled
输出会列出所有属于“Network Discovery”组的规则,每条规则的Enabled列会显示True(启用)或False(禁用)。如果想快速判断整体状态,还可以统计启用规则的数量:
# 统计已启用的网络发现规则数量 (Get-NetFirewallRule -DisplayGroup "Network Discovery" | Where-Object Enabled -eq True).Count
检查文件和打印机共享状态
换个规则组名称就能复用逻辑:
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" | Select-Object Name, DisplayName, Enabled
二、修正netsh命令,按规则组查询
你之前的show rule命令用错了匹配方式,应该直接指定group参数,而不是用find模糊匹配:
查看网络发现规则组
netsh advfirewall firewall show rule group="Network Discovery"
这个命令只会列出属于“Network Discovery”组的规则,每条规则末尾会明确标注Enabled: Yes或No,不会混杂其他组的规则。
查看文件和打印机共享规则组
netsh advfirewall firewall show rule group="File and Printer Sharing"
三、查看全局开关的注册表状态
Windows的网络发现/文件共享有一个全局控制开关,对应的注册表值可以直接反映功能的整体状态:
检查网络发现全局状态
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Network\Connection" /v NetworkDiscoveryEnabled
- 返回
0x1表示启用 - 返回
0x0表示禁用
检查文件和打印机共享全局状态
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Network\Connection" /v FileSharingEnabled
- 返回
0x1表示启用 - 返回
0x0表示禁用
小提示:注册表值和防火墙规则是联动的,但偶尔可能出现不一致(比如手动修改规则后),建议结合规则状态一起判断更准确。
内容的提问来源于stack exchange,提问作者Nolanr
相关产品推荐
相关产品推荐

