服务器 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-NetAdapter
Cmdlet 按预期工作并打开 NIC。
- 那么什么是“不存在”,为什么 Powershell 在这种状态下无法启用 NIC,但我通过 GUI 启用它时没有遇到任何问题,但现在似乎只能在启用和禁用之间来回切换?
- 如果我想要恢复“不存在”状态,该如何做?
- 当 NIC 处于“不存在”状态时,如何使用 Powershell 启用它?
答案1
该Not Present
状态来自 MSFT_NetAdapter 类的 InterfaceOperationalStatus。它用于已知但当前由于缺少硬件而不可用的网络接口。另一个原因可能是当时未加载硬件驱动程序。如果您使用设备管理器停用 NIC,驱动程序将被卸载。例如,VMware Workstation 的虚拟 NIC 将停用并显示为“不存在”,直到您启动使用它们的虚拟机。
Powershell 仅使用 、和来处理接口Enable-NetAdapter
,而不是 NIC 本身。如果设备已停用,那么您可能必须使用Disable-NetAdapter
Get-NetAdapter
设备管理 cmdlet
答案2
如果您关闭了 NIC(设备),则可能会显示为“状态:不存在”。要启用设备,您只需使用 Get-WmiObject 命令:
$wmi = Get-WmiObject -Class Win32_NetworkAdapter -filter “名称 LIKE '%Adapter%'”
$wmi.启用()