2017-10-12 42 views
1

我有一個腳本,它將提供如下的NIC綁定順序。但有反正讓我可以寫一個條件,如果綁定順序是vEthernet*,storage然後PowerShell中的NIC順序

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

林不知道其中的你需要它,但你可以使用regex來檢查:

vEthernet[^,]+?,storage 

enter image description here

現在你可以使用-match運營商使用在if聲明:

if ($yourBinding -match 'vEthernet[^,]+?,,storage') 
{ 
    # do something 
} 
else 
{ 
    # do something else 
} 
0

與所有的尊重,我不認爲你是在用編程的正確方法這個。我推測你最終想重新訂購"HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage").Bind並將其放回到註冊表中。 (幾年前,我有過類似的請求,並在創造了一個VBScript。)

在腳本中,您目前正在設法應對適配器名稱來重新定義了原bindingorder的順序,但$DeviceID和之間的關係$Adapter這個名字是完全迷失在你目前的做法。
代替進行字符串處理,PowerShell更好,更快,更原生地使用array或本例中甚至是HashTable或「PSCustomObject」形式的對象,其中$DeviceID$Adapter名稱之間保持相關。我想在這裏指出,你可能有多個vEthernet adpaters和一些$adapter名稱顯然是空的(兩個逗號之間沒有任何內容...,,...),但是AFAIK並不意味着你可以刪除$DeviceID(沒有適配器名)從綁定順序...

我認爲這是寫在這裏爲您的要求一個很好的例子:
https://seawin.org/2016/06/04/setting-binding-and-route-registry-entries/

注:

  1. 你的綁定順序可以p飛行中的電位變化如果用戶創建VPN連接或啓動虛擬機,這可能意味着您不能在啓動或登錄時運行修復程序,但根據實際問題,您可能必須修復它,因爲它發生了通過設置NotificationQuery事件在特定的HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage註冊表項上。
  2. 更改綁定順序(即時)會對操作系統進程產生重大影響,除此之外您的CPU將會升高,網絡連接正在重置並且可能暫時不可用。因此,我建議您檢查/標記綁定順序是否真的發生了變化(必要時),並且只在必要時才重寫。
  3. 我懷疑與每個操作系統的綁定順序相關的已知問題是否相同。意思是,如果你打算把這個部署到多個操作系統版本,我會調查你處理的實際問題,這也適用於相關的操作系統。