服务器 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
请注意,Status 属性不是二进制的。它可能已启动、已禁用或不存在。
当我Enable-NetAdapter
在状态为“不存在”的 NIC 上运行时,该命令会静默返回,没有错误输出,但不会启用 NIC。然后我通过右键单击控制面板中的图标并选择启用来手动启用 NIC。它的状态现在是 Enabled,状态为 Up。
然后我Disable-NetAdapter
在网卡上运行。它的状态现在是“禁用”。
现在,Enable-NetAdapter
Cmdlet 按预期工作并打开了 NIC。
- 那么什么是“不存在”,为什么 Powershell 在处于该状态时无法启用 NIC,但我通过 GUI 启用它没有问题,但现在它似乎只能在启用和禁用之间来回切换?
- 如果我愿意,如何恢复“不存在”?
- 当 NIC 处于“不存在”状态时,如何使用 Powershell 启用它?
该
Not Present
状态来自 MSFT_NetAdapter 类的 InterfaceOperationalStatus。它用于已知但由于缺少硬件而当前不可用的网络接口。另一个原因可能是当时没有加载硬件驱动程序。如果您使用设备管理器停用 NIC,驱动程序将卸载。例如,VMware Workstation 的虚拟 NIC 将失去活力并显示为“不存在”,直到您启动使用它们的虚拟机。Enable-NetAdapter
Powershell 仅使用和处理接口Disable-NetAdapter
而不是 NIC 本身Get-NetAdapter
。如果设备已停用,那么您可能必须使用设备管理 cmdlet如果您关闭了 NIC(设备),它可以显示为“状态:不存在”。要启用设备,您只需要使用 Get-WmiObject 命令:
$wmi = Get-WmiObject -Class Win32_NetworkAdapter -filter "Name LIKE '%Adapter%'"
$wmi.enable()
资料来源:http: //blogs.technet.com/b/heyscriptingguy/archive/2014/01/13/enabling-and-disabling-network-adapters-with-powershell.aspx