从哈希表

时间:2017-01-11 23:50:12

标签: powershell

我正在尝试枚举哈希表中的值。

通常,可以使用GetEnumerator()方法或使用here之类的foreach语句来完成此操作。

但是,我正在构建自定义表以保持管道的最大灵活性。

# Create Custom Table
$ExpandedTable =
    @{e={$_.person.height};label='Height'},
    @{e={$_.person.weight};label='Weight'},
    @{e={$_.person.age};label='Age'},
    @{e={$_.person.Certifications};label='Certifications}'}

# Cmdlet
function Get-Person {
    param(
        [Parameter(Mandatory=$true,HelpMessage='Please enter a Name')]
        [string]$person
        [switch]$Expanded
    )

    if($person -match $Regex) {
        $PersonelProperties = Invoke-RestMethod -Method Get -Uri https://www.url.com/api/person -Body @{ apikey = $mykey
          secret = $somesecret 
    }
    if ($PersonelProperties.response_code -eq '0' -and $PersonelProperties.response.Count -eq 0) {
        Write-Warning -Message 'Person not found in Data Base!'
    } elseif ($PersonelProperties.response_code -eq '0' -and $PersonelProperties.response.Count -gt 0) {
        if ($Expanded -eq $true) { 
            # Attempting to create table from Data called from API here
            Write-Verbose -Message 'Creating Table'
            $PersonelProperties | Select-Object -Property $ExpandedTable
        } else {
            Write-Verbose -Message 'Creating Table'
            $PersonelProperties | Select-Object -Property $RegularTable
        }
    }
}

目标:

我想要以下输出:

PS > Get-Person 'John Doe'

Height                  : 73
Weight                  : 230
Age                     : 28
Certifications          : {GCIA, GFCE, OSCP, GREM}

我想从散列表数组{GCIA, GFCE, OSCP, GREM}

中删除认证值

看起来像这样:

Height                  : 73
Weight                  : 230
Age                     : 28
Certifications          : GCIA, GFCE, OSCP, GREM

如果有更好的做法可以做到这一点,那么任何建议都会得到认真对待。

1 个答案:

答案 0 :(得分:2)

加入计算财产中的Certifications列表:

@{e={$_.person.Certifications -join ', '};label='Certifications}'}