Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从powershell获取默认网关?_Powershell - Fatal编程技术网

如何从powershell获取默认网关?

如何从powershell获取默认网关?,powershell,Powershell,如果一台计算机有多个网关,如何使用PowerShell确定哪个是默认网关?使用WMI查询来提取您正在查找的数据。下面是一个相当简单的示例,用于为第一行变量中指定的设备提取默认网关。这将查询设备中的网络适配器,并将找到的信息(针对每个适配器)显示到控制台窗口-适配器索引、适配器描述和默认网关 扩展到处理多个设备,或者基于通过输入文件提供的列表进行处理,不需要花费太多时间 $computer = $env:COMPUTERNAME Get-WmiObject win32_networkAdapte

如果一台计算机有多个网关,如何使用PowerShell确定哪个是默认网关?

使用WMI查询来提取您正在查找的数据。下面是一个相当简单的示例,用于为第一行变量中指定的设备提取默认网关。这将查询设备中的网络适配器,并将找到的信息(针对每个适配器)显示到控制台窗口-适配器索引、适配器描述和默认网关

扩展到处理多个设备,或者基于通过输入文件提供的列表进行处理,不需要花费太多时间

$computer = $env:COMPUTERNAME Get-WmiObject win32_networkAdapterConfiguration -ComputerName $computer | Select index,description,defaultipgateway | Format-Table -AutoSize $computer=$env:COMPUTERNAME 获取WmiObject win32_网络适配器配置-ComputerName$computer| 选择索引、说明、defaultipgateway| 表格格式-自动调整大小
如果您使用的是PowerShell v3,则可以使用
Get-NetIPConfiguration
,例如:

Get-NetIPConfiguration | Foreach IPv4DefaultGateway

您需要知道使用了多个网关中的哪一个?如果是的话。根据我的记忆,当多个网关可用时,使用具有最低度量(“基于链路速度的成本”)的网关。要获取此信息,请运行以下命令:

Get-WmiObject -Class Win32_IP4RouteTable |
  where { $_.destination -eq '0.0.0.0' -and $_.mask -eq '0.0.0.0'} |
  Sort-Object metric1 | select nexthop, metric1, interfaceindex
如果有多个默认网关具有相同的成本,我认为应该使用网络适配器的绑定顺序来决定。我知道的唯一方法是使用GUI和注册表。要包含绑定顺序,您可以保存脚本的输出,从Win32_networkadapterconfiguration(使用interfaceindex标识)获取设置SID,并读取注册表项HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Linkage\Bind。此键列出了看起来的绑定顺序,从win32_networkadapterconfiguration获得的设置SID是它们标识设备的GUID。然后使用Bind reg.key中的顺序对具有相同度量的网关进行排序,您就得到了答案


解释如下:

我发现它如下所示,列出了所有活动网关,如果我错了,请纠正我

(Get-wmiObject Win32_networkAdapterConfiguration | ?{$_.IPEnabled}).DefaultIPGateway

我认为这将更加跨平台:

获取网络路由|
其中{$\.DestinationPrefix-eq'0.0.0.0/0'}|
选择{$\.NextHop}

如果这是您要求的,那么这是正确的。问题不清楚。:)Net/IP cmdlet可从Windows Server 2012和Windows 8以后的版本中获得。这很有表现力,但您只需少量键入即可获得相同的结果:
(get-NetRoute“0.0.0.0/0”)。NextHop