我有一个脚本,它将提供如下所示的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,,
答案 0 :(得分:0)
我不知道你需要它在哪里,但你可以使用db.getCollection('collection').aggregate([
{ "$match": {
"Id": "1585534",
"Type": NumberInt(42),
"$expr": {
"$and": [
{ "$eq": [{ "$hour": "$InDate" }, 18 ] },
{ "$eq": [{ "$minute": "$InDate" }, 30] }
]
}
}}
])
检查:
regex
现在,您可以使用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/
注意:
NotificationQuery
注册表项上设置HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage
事件。