reinstall/windows-get-netconf.ps1

65 lines
2.0 KiB
PowerShell
Raw Normal View History

2023-09-21 00:12:49 +08:00
# 物理网卡
foreach ($NetAdapter in Get-NetAdapter -Physical) {
$Name = $NetAdapter.Name
$MACAddress = $NetAdapter.MACAddress -replace '-', ':'
# IP条目
$IPEntries = (Get-NetIPAddress -InterfaceAlias $Name |
Where-Object {
$_.PrefixOrigin -match "RouterAdvertisement|DHCP|Manual" -and
$_.AddressState -eq "Preferred"
})
if (!$IPEntries) {
continue;
}
# IPv4
foreach ($IPEntry in $IPEntries) {
if ($IPEntry.AddressFamily -eq "IPv4") {
$IPAddress4 = $IPEntry.IPAddress
$PrefixLength4 = $IPEntry.PrefixLength
break
}
}
# IPv6
foreach ($IPEntry in $IPEntries) {
if ($IPEntry.AddressFamily -eq "IPv6") {
$IPAddress6 = $IPEntry.IPAddress
$PrefixLength6 = $IPEntry.PrefixLength
break
}
}
# IPv4 网关
foreach ($NetRoute in Get-NetRoute | Where-Object {
$_.InterfaceAlias -eq $Name -and
$_.DestinationPrefix -eq "0.0.0.0/0"
}) {
$DefaultIPGateway4 = $NetRoute.NextHop
break
}
# IPv6 网关
foreach ($NetRoute in Get-NetRoute | Where-Object {
$_.InterfaceAlias -eq $Name -and
$_.DestinationPrefix -eq "::/0"
}) {
$DefaultIPGateway6 = $NetRoute.NextHop
break
}
$OutputObj = New-Object -Type PSObject -Property @{
MACAddress = "$MACAddress".ToLower() # 和linux保持一致
IPAddress4 = $(If ($IPAddress4) { "$IPAddress4/$PrefixLength4" })
IPAddress6 = $(If ($IPAddress6) { "$IPAddress6/$PrefixLength6" })
DefaultIPGateway4 = $DefaultIPGateway4
DefaultIPGateway6 = $DefaultIPGateway6
}
# 按指定顺序输出
$OutputObj | Select-Object MACAddress, IPAddress4, IPAddress6, DefaultIPGateway4, DefaultIPGateway6
break
}