如何在 powershell 中为 get-netroute 创建变量以输入当前环境设置

How to create a variable in powershell for get-netroute to input current environment settings

所以我有一个有点复杂的问题,也许我不完全确定如何问,但我想使用 Get-Netroute 命令获取当前机器的默认网关并将其输入到相同的命令,然后将其添加为路由,如下所示。问题是我需要 运行 在具有许多不同默认网关的许多不同子网上的 AWS 实例上执行此操作,因此我需要网关在 route-add 命令中自动填充。我能够为默认网关创建一个变量,但问题是 get-netroute 命令会按实例更改 -interfaceindex-routemetric 选项卡,因此我需要为两者设置变量。我愿意使用其他命令我只是倾向于不太复杂并且可以在 1 行中完成的命令。

`$defaultgatway = Get-NetRoute -InterfaceIndex 5 -RouteMetric 0 | Select-Object NextHop

route -p ADD 169.254.169.254 MASK 255.255.255.255 $defaultgatway.NextHop

route -p ADD 169.254.169.251 MASK 255.255.255.255 $defaultgatway.NextHop

route -p ADD 169.254.169.250 MASK 255.255.255.255 $defaultgatway.NextHop`

这是我在尝试 运行 这个脚本时遇到的错误,就像在另一台机器上的值一样,它在我制作它的原始机器上运行良好:`

Get-NetRoute : No matching MSFT_NetRoute objects found by CIM query for 
instances of the ROOT/StandardCimv2/MSFT_NetRoute class on the  CIM server: 
SELECT * FROM MSFT_NetRoute  WHERE ((InterfaceIndex = 5)) AND ((RouteMetric = 
0)). Verify query parameters and retry.
At line:1 char:18
+ $defaultgatway = Get-NetRoute -InterfaceIndex 5 -RouteMetric 0 | Select-Object 
N ...
+                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (MSFT_NetRoute:String) [Get-NetRou 
   te], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound,Get-NetRoute
 
route : 
At line:3 char:1
+ route -p ADD 169.254.169.254 MASK 255.255.255.255 $defaultgatway.NextHop
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError`

我想我的总体问题是如何获取数据以放入这些变量中,如果不是这个命令,我应该使用什么命令?我肯定知道如何制作一般意义上的变量。

您可以使用 Get-NetIpConfiguration 获取默认网关,然后在 route -p add 命令中使用它。由于 Get-NetIpConfiguration returns 的网关是默认网关路由的完整 CIM 实例,因此您需要指定 NextHop 属性。为此,您最终会得到以下结果:

$defaultgatway = Get-NetIPConfiguration
route -p ADD 169.254.169.254 MASK 255.255.255.255 $defaultgateway.IPv4DefaultGateway.NextHop
route -p ADD 169.254.169.251 MASK 255.255.255.255 $defaultgateway.IPv4DefaultGateway.NextHop
route -p ADD 169.254.169.250 MASK 255.255.255.255 $defaultgateway.IPv4DefaultGateway.NextHop