在所有物理(有线)适配器上设置静态IP地址

时间:2018-12-31 20:09:48

标签: powershell

使用PowerShell,我们可以轻松地在InterfaceIndex这样的适配器上设置静态IP地址:

New-NetIPAddress -InterfaceIndex 17 -IPAddress 192.168.0.1 -PrefixLength 24 -DefaultGateway 192.168.0.254

我们希望能够在任何物理有线适配器上设置静态IP地址。我们可以这样获得物理适配器:

Get-NetAdapter –Physical

这将返回如下内容:

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet                  Intel(R) Ethernet Connection (5)        17      Disconnected 00-11-22-33-44-55      1 Gbps
Wi-Fi                     Intel(R) Wireless LAN                   7       Disconnected 00-11-22-33-44-56      72 Mbps
  1. 有什么方法可以只获取有线适配器,而不能获取无线适配器 适配器,而不是名称(可能是任何东西)?
  2. 由于可能有多个有线适配器(但很少见),并且 由于我们不知道可能使用哪个物理适配器,因此我们将 想要为每个有线适配器设置静态IP地址。什么可以 我们这样做(类似“ for / each”循环)将IP地址设置为 PC上的每个有线适配器?

编辑:在reading some more中,自Windows 8以来,似乎已将有线适配器 配置为静态命名为“以太网”。由于我们仅针对Windows 10,我们真的可以添加查询以仅获取名称为'Ethernet%的适配器吗?

2 个答案:

答案 0 :(得分:1)

您尝试过类似

Get-NetAdapter -Physical | Where-Object { $_.Name -match "^Ethernet" }

答案 1 :(得分:1)

我会使用

Get-NetAdapter -Physical | Where-Object { $_.PhysicalMediaType -eq "802.3" }

这似乎是仅物理以太网适配器的良好指示,它将获得在Description / DisplayName中没有“以太网”的适配器。 WLAN设备将具有本机802.11(或其他表示无线适配器的指示)。

执行Get-NetAdapter | Export-CSV C:\Path\To\CSV以获取系统上所有适配器的所有属性。您可能会发现更多属性可用于过滤。

关于在所有以太网适配器上设置IP地址,这应该可以正常工作(尽管我警告说,在同时使用多个以太网适配器的不太可能发生的事件中,在多个适配器上设置相同的IP地址可能会引起麻烦):< / p>

$ethernetAdapters = @(Get-NetAdapter -Physical | Where-Object {$_.PhysicalMediaType -eq "802.3"})
$staticIPAddress = "0.0.0.0"
$gateway = "0.0.0.0"
$prefixLength = "24"

foreach ($adapter in $ethernetAdapters) {
    New-NetIPAddress -IPAddress $staticIPAddress -AddressFamily IPV4 -DefaultGateway $gateway -PrefixLength $prefixLength -InterfaceIndex $adapter.InterfaceIndex
}

请记住将变量替换为您的环境信息,尤其是您将用于适配器的IP地址。

您可能希望找到一种方法,可以依次为每个$adapter(*。200,*。201等)生成一个新的IP地址,其中一部分可以用ip地址,mac地址和序列号用于保存记录。