我需要确定一台计算机是否实际上是具有 wifi 功能的笔记本电脑(重点是 wifi 而不是笔记本电脑)。更确切地说,我想通过微软和本地更新发布者到那些客户端。为此,我想创建适当的“可安装包规则”,即客户端上的 Windows 更新服务使用的简单规则,用于预先决定更新/安装包是否适用。通常,此类“可安装规则”是“文件存在”、“注册表项存在”、“WMI 查询”、“MSI 产品已安装”等规则的逻辑组合,因此我更喜欢其中一种方法。我希望有人能帮我找到适用于 Win 7/Vista 的方法,最好也适用于 XP。
我猜 WMI 查询是可行的方法,但我在这方面经验不足。我发现可以查询 EnclosureType,然后可能检测笔记本电脑。但是,如果能检测到实际可用的 wifi 接口,我会更高兴。有人知道如何解决这个问题吗?
如果您需要我澄清任何事情,请随时发表评论。
答案1
要使用 WMI 测试WLAN AutoConfig
服务是否正在运行,您可以使用以下查询:SELECT * FROM Win32_Service WHERE Name = 'Wlansvc' AND State = 'Running'
。但是,如果在没有无线网卡的情况下手动启动服务,则依赖服务状态可能会产生误导。
您还可以使用以下查询在适配器名称中搜索包含“无线”的任何内容:SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Description LIKE '%wireless%'
(% 是 WMI 的通配符,代表零个或多个字符)。
命名空间中有另一个类root\wmi
(以前的查询使用默认root\cimv2
命名空间)代表 802.11 配置条目,但我发现对它的支持并不总是存在,因此它不应该被用作唯一的检测方法:SELECT * FROM MSNdis_80211_Configuration
。
我没有使用 WSUS 本地更新发布者的经验,所以我无法帮助您确切实现 WMI 查询,但您可以在 PowerShell 中使用它们进行测试,Get-WmiObject -Query "<query>"
或者Get-WmiObject -Query "<query>" -Namespace <namespace>
如果您需要自定义命名空间。