如何从命令行检索当前 Windows NLA 网络位置?

如何从命令行检索当前 Windows NLA 网络位置?

我们有一个 Windows Server 2008 R2 域控制器,总是重新启动后,将其 NLA 位置设置为“网络 3”。毫无疑问,默认设置为公共,这与我的域配置文件防火墙设置不符。我必须手动禁用并重新启用网络适配器,然后它才能将自身设置回域配置文件。

我试过了KB2524478以及一大堆其他事情。现在我厌倦了尝试解决这个问题(而且时间很快就用完了),所以只想绕过它。我原本想编写禁用/启用脚本netsh并完成它,但我想更进一步,确保 NLA 位置实际上是“网络 3”,而不是“the-domain.example.org”(更具体地说,只是检查它不是域)。这样,我可以更频繁地安排它,而不仅仅是在启动时安排。

我只是缺少这个难题的一块 - 如何使用我可以管道传输的东西来检索位置FIND /i "the-domain.example.org",以便我可以按如下方式运行它:

<something> | ...
FIND /i "the-domain.example.org" || ...
NETSH interface set interface name="Local Area Connection" admin=DISABLED & ...
NETSH interface set interface name="Local Area Connection" admin=ENABLED

那么是什么<something>

答案1

您可以查询相应的注册表项,以查看网络配置文件的设置。您需要查看\HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures以找到相应接口的子项。这需要一点侦查工作,但最简单的方法是查找您的当前的默认网关。找到接口的 SubKey 后,记下 ProfileGUID。然后,您可以使用 ProfileGUID 找到该接口的配置文件设置..\NetworkList\Profiles。从那里将 REG_DWORD:Category 重新设置为 2 应该会将接口的配置文件设置为域。

您需要在更改类别属性之前关闭 NLA 服务。net stop nlasvc只需关闭 NLA 和 netprofm 即可。更改注册表后,请重新启动它:net start netprofm

相关内容