PowerShell中的NIC顺序

时间:2017-10-12 08:09:16

标签: powershell

我有一个脚本,它将提供如下所示的NIC绑定顺序。但无论如何,如果绑定顺序是vEthernet*,storage然后

,我可以写一个条件
Add-Content $report "<td bgcolor= 'Aquamarine' height='25' align=center><B>$ServicesResult1</B></td>"

否则

Add-Content $report "<td bgcolor= 'Yellow' height='25' align=center><B>$ServicesResult1</B></td>"
$result1 = Invoke-Command -ComputerName slcae212 -ScriptBlock {
    Function Get-BindOrder {
        $Binding = (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage").Bind
        $Return = New-Object PSobject
        $BindingOrder = @()
        foreach ($Bind in $Binding) {
            $DeviceId = $Bind.Split("\")[2]
            $Adapter = (Get-WmiObject Win32_Networkadapter | Where {$_.GUID -eq $DeviceId }).NetConnectionId
            $BindingOrder += $Adapter
        }
        $BindingOrder
    } #EndFunction
    CLS
    Get-BindOrder
}
$adapteresult1= $result1 -join ","

输出:

vEthernet (10.211.21.0_20),,storage,Ethernet 5,Ethernet 4,Ethernet 2,Ethernet 6,,

2 个答案:

答案 0 :(得分:0)

我不知道你需要它在哪里,但你可以使用db.getCollection('collection').aggregate([ { "$match": { "Id": "1585534", "Type": NumberInt(42), "$expr": { "$and": [ { "$eq": [{ "$hour": "$InDate" }, 18 ] }, { "$eq": [{ "$minute": "$InDate" }, 30] } ] } }} ]) 检查:

regex

enter image description here

现在,您可以使用vEthernet[^,]+?,storage 运算符在if语句中使用它:

-match

答案 1 :(得分:0)

尽管如此,我认为你没有正确的编程方式。我假设您最终想要重新排序"HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage").Bind并将其放回注册表中。 (多年前我有类似的请求,并为此创建了VBScript。)

在您的脚本中,您当前正在尝试处理适配器名称以重新定义原始绑定顺序,但$DeviceID$Adapter名称之间的关系在您当前的方法中完全丢失。
而不是进行字符串操作,PowerShell更好,更快,更原生地使用array形式的对象,或者在这种情况下甚至是HashTable或'PSCustomObject',您可以保持相关$DeviceID$Adapter名称。我想在此指出,您可能有多个vEthernet adpaters,并且某些$adapter名称显然为空(两个逗号...,,...之间没有任何内容),但AFAIK没有' t暗示您可以从绑定顺序中删除$DeviceID(没有适配器名称)...

我认为这里写的请求有一个很好的例子:
https://seawin.org/2016/06/04/setting-binding-and-route-registry-entries/

注意:

  1. 您的约束订单可能会即时更改,例如如果用户创建VPN连接或启动VM,这可能意味着您不能只在启动或登录时运行修复程序,但根据实际问题,您可能必须在发生时修复它通过在特定的NotificationQuery注册表项上设置HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage事件。
  2. 更改绑定顺序(动态)会对操作系统进程产生重大影响,除了CPU将引发,网络连接正在重置并且可能暂时不可用。因此,我建议你检查/标记绑定顺序是否真的改变了(如果需要),只在必要时重写它。
  3. 我怀疑与绑定顺序相关的已知问题是否与每个操作系统相同。这意味着,如果您要将其部署到多个操作系统版本,我会调查您处理的实际问题,这也适用于相关的操作系统。