在 Linux 机器上,我过去常常通过 ifconfig 和 ip route 命令获取所需的大部分网络信息。
在 PowerShell 中,我仍然不清楚如何快速概览机器的网络配置。要么是我遗漏了某些信息,要么这些信息分散在多个命令中(默认情况下格式不方便)。
在我自己的电脑上,我最终实现了这些功能,但我经常在其他没有这些功能机器上工作,而有时这些机器也没有连接到互联网,因此安装各种 nuget 不是一个选择。
那么您建议如何在干净的 PowerShell 5 上获取网络信息?
function ifconfigAlias {
Get-NetIPConfiguration -Detailed | Select-Object `
@{ name = "Idx"; expr = { $_.NetAdapter.InterfaceIndex } },
InterfaceAlias,
@{ name = "Address"; expr = {$_.IPv4Address}; },
@{ name = "MAC"; expr = { $_.NetAdapter.LinkLayerAddress } },
@{ name = "Link"; expr = { $_.NetAdapter.Status -replace "Disconnected", "Down" } },
@{ name = "Speed"; expr = { $_.NetAdapter.LinkSpeed } },
@{ name = "Forwarding"; expr = { $_.NetIPv4Interface.Forwarding } },
InterfaceDescription `
| Sort-Object InterfaceAlias | Format-Table -Wrap -AutoSize
}
Set-Alias -Name my-ipconfig -Value ifconfigAlias
function routePrintAlias {
param(
[Parameter(HelpMessage="Sort order")]
[ValidateSet("iface", "dest")]
[string]$SortBy = "dest"
)
$Lut = @{"if" = "InterfaceIndex"; "dest" = "DestinationPrefix"}
$SortProp = $Lut[$SortBy]
Get-NetRoute | `
Sort-Object $SortProp | `
Where-Object { `
($_.AddressFamily -eq 'ipv4') -and `
($_.DestinationPrefix -ne '255.255.255.255/32') -and `
($_.DestinationPrefix -ne '224.0.0.0/4') } | `
Select-Object `
DestinationPrefix, `
NextHop, `
@{name = "Idx"; expr = { $_.InterfaceIndex } }, `
InterfaceAlias, `
RouteMetric | `
Format-Table
}
Set-Alias -Name my-route -Value routePrintAlias
答案1
请随意编辑以满足您的喜好
Get-WmiObject win32_networkadapterconfiguration |
Select-Object -Property @{
Name = 'IPAddress'
Expression = {($PSItem.IPAddress[0])}
},MacAddress |
Where IPAddress -NE $null