在Powershell格式化哈希表格的数组

时间:2014-08-27 11:20:28

标签: arrays powershell hash

我自己试图找到一个解决方案,如果已经在某个地方得到解答我会道歉,但我可以自己完成这项工作。

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

代码如下所示:

$WLANS=@{}
$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

我尝试了不同的东西,但我总是得到同样的输出。 如果有人可以提供帮助,将不胜感激!

2 个答案:

答案 0 :(得分:1)

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

$WLANS=@{}

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

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

$WLANS += $CurrentWLAN

答案 1 :(得分:1)

您需要构建自定义对象,而不是将属性放在哈希表中。它看起来像这样

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

所以你有你的数组,你遍历数组,每个循环用你的名字/值对构建一个自定义对象。然后在对象数组$ CustomObj

中收集各个对象