【问题标题】:Disable IPV6 on specific NIC via PowerShell using a Com Object on Windows Server 2008 R2?在 Windows Server 2008 R2 上使用 Com 对象通过 PowerShell 在特定 NIC 上禁用 IPV6?
【发布时间】:2012-04-08 21:00:44
【问题描述】:

我需要编写一些 Windows Server 2008 R2 版本的脚本,最好是在 PowerShell 中。我需要禁用或取消选中特定 NIC 上的 IPV6(每次都使用同一个 NIC)。目前,我必须手动设置它。我不想为整个服务器完全禁用 IPV6,其他东西将来可能会使用它。是否有我可以在 PowerShell 命令中引用指定我的 NIC“Intel(R) PRO/1000 MT 网络连接”并禁用 IPV6 的对象?不幸的是,组策略不是一个选项,老板说。我尝试通过“PowerShell Scriptomatic”找到合适的 WMI 对象,但未能找到 Intel NIC 上启用设置与禁用设置之间的区别。提前致谢。

【问题讨论】:

标签: powershell windows-server-2008 wmi ipv6


【解决方案1】:

我使用带有“netsh”命令的简单 .bat 文件。如果您愿意,当然可以在 Powershell 中使用“netsh”。

【讨论】:

  • 愿意描述一下你是怎么做到的吗?
【解决方案2】:

在删除 IPV6 之前,您最好先阅读这些 Microsoft 文章:

How to disable IP version 6 (IPv6)

What are Microsoft's recommendations about disabling IPv6?

总而言之,您可以使用(详细说明here)在所有接口上禁用 IPV6:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters]
“DisabledComponents”=dword:ffffffff

编辑

根据@David Brabant 对只能在一个适配器上禁用 IPV6 的评论,您可以使用注册表项绑定或取消绑定它:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip6\Linkage]
"Bind"=RegmultiSZ

形式:

\Device\{DBB82A20-A485-4CB6-AD31-EF14B91F5EFB}

你可以用 :

构建这条线
# Public Name NetworkCard Name
$networkCardName = "Connexion au réseau local 1"

# Get Device GUID
$guid=(gwmi -query "select * from win32_networkadapter where netconnectionid= '$networkCardName'").guid

【讨论】:

  • OP 试图在单个 NIC 上而不是全局上禁用它。
  • 阅读文章:微软不建议在生产机器上按照问题中的要求禁用 IPV6。
  • 我看到的唯一可能是不禁用它的原因是“如果禁用 IPv6,您将无法使用 Windows Meeting Space 或任何依赖于 Windows Peer-to 的应用程序-Peer Networking 平台或 Teredo 过渡技术。”。我没有看到任何建议不要为特定界面禁用它。
  • 请阅读第二个链接:从微软的角度来看,IPv6 是 Windows 操作系统的必备部分,在操作系统开发过程中启用并包含在标准 Windows 服务和应用程序测试中。由于 Windows 是专门为存在 IPv6 而设计的,因此 Microsoft 不会执行任何测试来确定禁用 IPv6 的影响。如果在 Windows 7 或更高版本上禁用 IPv6,某些组件将无法运行。此外,您可能不认为使用 IPv6 的应用程序,例如远程协助、家庭组、DirectAccess,
  • 我明白了。列出的应用程序都是桌面应用程序。 OP 正在寻求配置 Win Server,因此可能没有问题。也许将设置更改为首选 IPv4 可能更安全。
【解决方案3】:

Microsoft 有一个命令行程序 nvspbind (https://gallery.technet.microsoft.com/Hyper-V-Network-VSP-Bind-cf937850),可以在特定接口上禁用 ipv6。这似乎与取消选中适配器设置对话框中的 IPv6 框相同。您可以从脚本或您的程序启动此程序。

在特定接口上禁用 IPv6 的命令行参数是:

nvspbind -d {GUID} ms_tcpip6

【讨论】:

  • 这应该是公认的答案,因为 nvspbind 无需重新启动或注销/登录即可工作。您甚至不需要提供 {GUID},它也适用于网络接口的名称。我使用这个命令来获取网络接口的名称: wmic nic get NetConnectionID
  • 谢谢。这正是我所需要的。从 Windows 7 到德语 Windows 10 都可以使用相同的 32 位二进制文​​件。非常完美!
猜你喜欢
  • 2011-05-01
  • 2018-07-05
  • 2019-03-02
  • 2014-06-21
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
相关资源
最近更新 更多