2017-10-12 9 views
1

私は以下のようなNICのバインド順序を提供するスクリプトを用意しています。しかし、結合順序は、その後vEthernet*,storagePowerShellでの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現在の方法では名前が完全に失われています。
文字列操作を行う代わりに、arrayという形式のオブジェクト、またはこの場合はHashTableまたは$DeviceID$Adapterという名前を関連付ける「PSCustomObject」の形式でも、PowerShellがオブジェクトを扱う方が優れています。 。ここでは複数のvEthernetのadpatersを持つ可能性があり、いくつかの$adapterの名前は空白になっていることを指摘したいと思います(...,,...の間には何もありません)。バインド順から名前)...

私はここに書かれたあなたの要求のための良い例があると思います。
https://seawin.org/2016/06/04/setting-binding-and-route-registry-entries/

注:

  1. ご結合順でしたpオンザフライでの臨時変化。ユーザーがVPN接続を作成したりVMを起動した場合、起動時またはログオン時に修正プログラムを実行するだけでは問題が発生する可能性があります。と修正する必要があります。NotificationQueryイベント特定のHKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkageレジストリキーにあります。
  2. バインディング順を変更すると、オペレーティングシステムプロセスに重大な影響があります.CPUが発生させるほか、ネットワーク接続がリセットされてしばらくは使用できなくなる可能性があります。そのため、バインディングオーダーが実際に変更されたかどうか(必要な場合)を確認してフラグを立て、必ず必要なときに書き直してください。
  3. バインド順序に関連する既知の問題がすべてのオペレーティングシステムで同じかどうかは疑問です。意味、もしこれを複数のOSバージョンに配備しようとするならば、あなたが扱っている実際の問題を調査し、関連するオペレーティングシステムにも当てはまります。
関連する問題