2017-10-12 47 views
0

我有一個腳本檢查NIC綁定順序的腳本。輸出腳本顯示額外的逗號

$result = Invoke-Command -ComputerName $ComputerName -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 
} 

$adapteresult = $result -join (",") 
時,我贊同這個 $adapteresult = $result

,我得到的輸出如下

 
PS C:\> $adapteresult 
vEthernet (10.211.14.0_20) 
storage 
Ethernet 5 
Ethernet 4 
Ethernet 2 
Ethernet 6 

將同一個變量,當我加入$adapteresult = $result -join (","),我得到了投入與之間的額外命令。

 
vEthernet (10.241.24.0_21),storage,Ethernet 5,,Ethernet 4,Ethernet 2,Ethernet 6,, 

我不希望輸出中有任何額外的逗號。期待像下面的輸出:

 
vEthernet (10.241.24.0_21),storage,Ethernet 5,Ethernet 4,Ethernet 2,Ethernet 6, 
+0

有數組中的一個空字符串。 $ adapteresult [$ adapteresult.count - 1]應該是空的。刪除那一個,它會工作 – guiwhatsthat

+0

我知道你看到什麼,但收集的數量是多少? '$ result.Count' – Matt

+0

我沒有看到你提到的。你可以請給我看看編輯所需的行 – Sandeep

回答

0

我已經糾正了自己和它的做工精細現在

$a = (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage").Bind | ForEach-Object { 
      $guid = ($_ -split '\\')[2] 
      Get-WmiObject -Query "SELECT * FROM Win32_NetworkAdapter WHERE GUID='$guid'" | 
      Select-Object -ExpandProperty NetConnectionID 
     } 

$b = $a -join"," 
2

(Get-WmiObject Win32_Networkadapter | Where {$_.GUID -eq $guid}).NetConnectionId似乎回到你是在$BindingOrder捕捉$空。在屏幕上顯示他們不佔用空間,但他們在那裏無論如何。我的機器上運行你的代碼的精簡版本地...

$results = ((Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage").Bind | Foreach-Object { 
    $guid = $_.split("\")[2] 
    (Get-WmiObject Win32_Networkadapter | Where {$_.GUID -eq $guid}).NetConnectionId 
}) 

使用讓我們看看$results

$results 
$results.Count 
$results -contains $null 

Local Area Connection 
6 
True 

在我的機器,我只對本地連接一個匹配。但$results已存儲6個項目,其中至少一個是$null。您需要過濾掉它看起來在您的查詢中的這些結果。

$Adapter = (Get-WmiObject Win32_Networkadapter | Where {$_.GUID -eq $DeviceId }).NetConnectionId 
if($Adapter){ 
    $BindingOrder += $Adapter 
} 

應該這樣做。如果$adapter爲空或空字符串,那麼它將不會被添加到$bindingorder

+0

謝謝。我在這個腳本中得到了正確的綁定順序。但是在這裏,當我使用$ echoresults = $ results -join「,」命令時,我用額外的逗號獲得輸出。 vEthernet(10.211.14.0_20),存儲,以太網6,以太網3,以太網2,以太網,, – Sandeep