2014-08-27 67 views
0

我试图自己找到一个解决方案,我很抱歉,如果它已经在某个地方回答了,但我不能自己做这个工作。Powershell中的哈希表格式化阵列

我已经写了一个脚本,该列表的wifi网络,获取不同的信息,并把它们放在一个哈希表。从那里我创建了一个PSObject。

的代码看起来是这样的:

[email protected]{} 
$wlanData = netsh wlan show networks mode=BSSID 

(... Here i extract all the info from $Wlandata ...) 

    $WLANS.SSID = $SSID 
    $WLANS.BSSID = $BSSID 
    $WLANS.RSSI = $RSSI 

$(foreach ($ht in $WLANS){new-object PSObject -Property $ht}) | Format-Table -AutoSize 

的outpout看起来是这样的:

RSSI  SSID    BSSID 
----  ----    ----- 
{97, 16} {TEST, SFR-6019} {xx:xx:xx:xx:xx:xx, yy:yy:yy:yy:yy:yy} 

,我希望它看起来像这样:

RSSI  SSID    BSSID 
----  ----    ----- 
97   TEST    xx:xx:xx:xx:xx:xx 
16   SFR-6019   yy:yy:yy:yy:yy:yy 

我已经尝试了不同的事情,但我总是得到同样的产出。 如果有人能帮助它,将不胜感激!

回答

1

而不是把属性在哈希表中的你需要建立一个自定义对象。它看起来像这样

$Processes = Get-Process | select -first 2 
$CustomObj = Foreach ($Process in $Processes) 
{ 
    [pscustomobject] @{ 
    'Name' = $Process.ProcessName 
    'Handles' = $Process.Handles 
    'Comment' = 'test123' 
    } 
} 
$CustomObj 

所以,你有你的数组,你通过数组迭代和每个回路建立一个自定义对象与名称/值对。然后将单个对象收集到对象数组中$ CustomObj

+0

我已经重写了我的脚本以创建一个对象,并且它工作正常!谢谢:) – xashcorex 2014-08-27 13:33:16

+0

太棒了!不客气,很高兴我能帮上忙。 – 2014-08-27 13:54:18

1

嗯,我看到较少的代码。我想你错过了一个循环。试试这个WLAN的foreach选择数据:

[email protected]{} 

$CurrentWLAN = "" | Select-Object -Property SSID, BSSID, RSSI 

$CurrentWLAN.SSID = $SSID 
$CurrentWLAN.BSSID = $BSSID 
$CurrentWLAN.RSSI = $RSSI 

$WLANS += $CurrentWLAN