2017-09-14 67 views
0

需要獲取有關網絡接口的一些信息:轉換PowerShell的對象JSON,在特定的IP地址

> Get-NetIPConfiguration | select IPv4Address, InterfaceAlias, InterfaceDes cription | ConvertTo-Json 

迴應

[ 
    { 
     "IPv4Address": [ 
          "MSFT_NetIPAddress (Name = \";C?8;@B8CC8;??55;:55;55;\", CreationClassName = \"\", SystemCr 
eationClassName = \"\", SystemName = \"\")" 
         ], 
     "InterfaceAlias": "wifi", 
     "InterfaceDescription": "Qualcomm Atheros AR5BWB222 Wireless Network Adapter" 
    }, 
    { 
     "IPv4Address": [ 
          "MSFT_NetIPAddress (Name = \";@C8???8;??8??B55;@55;55;\", CreationClassName = \"\", SystemC 
reationClassName = \"\", SystemName = \"\")" 
         ], 
     "InterfaceAlias": "Ethernet", 
     "InterfaceDescription": "Realtek PCIe GBE Family Controller" 
    } 
] 

這看起來像自嘆不如。我希望是這樣的:

[ 
    { 
     "IPv4Address": "12.3.3.4", 
     "InterfaceAlias": "wifi", 
     "InterfaceDescription": "Qualcomm Atheros AR5BWB222 Wireless Network Adapter" 
     "NetAdapter.Status" : "connected" 
    }, 
    { 
     "IPv4Address": "192.168.0.1", 
     "InterfaceAlias": "Ethernet", 
     "InterfaceDescription": "Realtek PCIe GBE Family Controller" 
     "NetAdapter.Status" : "connected" 
    } 
] 

還需要獲取接口狀態連接或斷開,它存儲在NetAdapter.Status。 請幫忙。最好把它寫在一行中。

回答

0

不在一條線......

$n = Get-NetIPConfiguration | select InterfaceIndex, IPv4Address, InterfaceAlias, InterfaceDescription, NetAdapter 
ForEach($a in $n){ 
    $a.Ipv4Address = $a.Ipv4Address.IpAddress 
    $a | Add-Member -type NoteProperty -name Status -value $a.NetAdapter.Status 
    $a.PSObject.Properties.Remove('NetAdapter') 
} 

$n 
$n | ConvertTo-Json 

結果:

InterfaceIndex  : 10 
IPv4Address   : 192.168.99.135 
InterfaceAlias  : wifi 
InterfaceDescription : Qualcomm Atheros AR5BWB222 Wireless Network Adapter 
Status    : Up 

InterfaceIndex  : 16 
IPv4Address   : 169.254.153.248 
InterfaceAlias  : Ethernet 
InterfaceDescription : Realtek PCIe GBE Family Controller 
Status    : Disconnected 

[ 
    { 
     "InterfaceIndex": 10, 
     "IPv4Address": "192.168.99.135", 
     "InterfaceAlias": "wifi", 
     "InterfaceDescription": "Qualcomm Atheros AR5BWB222 Wireless Network Adapter", 
     "Status": "Up" 
    }, 
    { 
     "InterfaceIndex": 16, 
     "IPv4Address": "169.254.153.248", 
     "InterfaceAlias": "Ethernet", 
     "InterfaceDescription": "Realtek PCIe GBE Family Controller", 
     "Status": "Disconnected" 
    } 
] 

我相信,有更多的短,可能是最佳的方式

2

您需要遍歷更深的對象:

Get-NetIPConfiguration | select IPv4Address, InterfaceAlias, InterfaceDescription | 
    ConvertTo-Json -Depth 5 

默認情況下PowerShell在只有3個層次深

+0

謝謝你,這似乎是接近,但不是我所尋找的。 – kyb