2014-08-27 2 views
0

Я попытался найти решение самостоятельно, и я приношу свои извинения, если на это уже был дан ответ, но я не мог сделать эту работу самостоятельно.Array Of Hashtable Formating in Powershell

Я написал сценарий, содержащий список Wi-Fi-сетей, получаю различную информацию и помещаю их в хэш-таблицу. Оттуда я создал 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

+0

Удивительный! Пожалуйста, рад, что я могу помочь. –

1

Хм я вижу меньше кода. Я думаю, вы пропустили петлю. Попробуйте Еогеасп WLAN вы выбираете данные:

[email protected]{} 

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

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

$WLANS += $CurrentWLAN