Get-NetAdapter Powershell Cmdlet 中的“不存在”是什么意思?

Get-NetAdapter Powershell Cmdlet 中的“不存在”是什么意思?

服务器 2012,Powershell 3.0。

我正在做一些需要自动启用和禁用网络适配器的工作。下面是我运行时看到的示例Get-NetAdapter

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Slot 0 Port 4             HP NC382i DP Multifunction Gigabi...#53      15 Not Present  11-80-1B-94-2A-82          0 bps
Slot 0 Port 2 (TM-2)      HP NC382i DP Multifunction Gigabi...#51      14 Up           11-80-1B-94-27-72         1 Gbps
Team 1 (Team)             Microsoft Network Adapter Multiplexo...      17 Up           11-80-1B-94-2A-72         1 Gbps
Slot 0 Port 3             HP NC382i DP Multifunction Gigabi...#52      13 Disabled     11-80-1B-94-2A-80         1 Gbps
Slot 0 Port 1 (TM-1)      HP NC382i DP Multifunction Gigabi...#50      12 Up           11-80-1B-94-2A-70         1 Gbps

请注意,状态属性不是二进制的。它可以是“Up”、“Disabled”或“Not Present”。

当我在状态为“不存在”的 NIC 上运行时Enable-NetAdapter,命令会默默返回,没有错误输出,但它不会启用 NIC。然后我通过右键单击控制面板中的 NIC 图标并选择启用来手动启用 NIC。它的状态现在为已启用,状态为启动。

然后我运行Disable-NetAdapter了 NIC。它的状态现在是“已禁用”。

现在,Enable-NetAdapterCmdlet 按预期工作并打开 NIC。

  • 那么什么是“不存在”,为什么 Powershell 在这种状态下无法启用 NIC,但我通过 GUI 启用它时没有遇到任何问题,但现在似乎只能在启用和禁用之间来回切换?
  • 如果我想要恢复“不存在”状态,该如何做?
  • 当 NIC 处于“不存在”状态时,如何使用 Powershell 启用它?

答案1

Not Present状态来自 MSFT_NetAdapter 类的 InterfaceOperationalStatus。它用于已知但当前由于缺少硬件而不可用的网络接口。另一个原因可能是当时未加载硬件驱动程序。如果您使用设备管理器停用 NIC,驱动程序将被卸载。例如,VMware Workstation 的虚拟 NIC 将停用并显示为“不存在”,直到您启动使用它们的虚拟机。

Powershell 仅使用 、和来处理接口Enable-NetAdapter,而不是 NIC 本身。如果设备已停用,那么您可能必须使用Disable-NetAdapterGet-NetAdapter设备管理 cmdlet

答案2

如果您关闭了 NIC(设备),则可能会显示为“状态:不存在”。要启用设备,您只需使用 Get-WmiObject 命令:

$wmi = Get-WmiObject -Class Win32_NetworkAdapter -filter “名称 LIKE '%Adapter%'”

$wmi.启用()

来源: http://blogs.technet.com/b/heyscriptingguy/archive/2014/01/13/enabling-and-disabling-network-adapters-with-powershell.aspx

相关内容