如何将格式应用于数组中的对象属性?

时间:2019-09-03 03:00:45

标签: powershell

我正在研究一个Powershell脚本,该脚本从数据库中提取一些电子邮件属性,并以表格格式显示它们。我已经能够很容易地格式化实际数据,但是当我使用对象的属性作为标题时,我正在努力尝试将格式应用于它们(即,粗体或下划线HTML标签)。

我尝试在调用它们时修改实际属性(即第2行),但是由于对象不包含任何会失败的属性,例如 Domain 。而且我知道我无法将格式应用于赋值行,因为那样便无法编译(即“一些html + $ Result。'服务位置” +“ /一些html”)

我的代码示例如下...

 foreach($email in $api_call.data){
            $Result = "" | Select Type, Domains, 'Service Location', 'Webmail URL', 'SPF-Enabled' 
            $Result.Type = $email.attributes.traits.'type' + "<br>"
            $Result.Domains = $email.attributes.traits.'domain-s'.values.name + "<br>"
            $Result.'Service Location' = $email.attributes.traits.'service-location' + "<br>"
            $Result.'Webmail URL' = $email.attributes.traits.'webmail-url' + "<br>"
            $Result.'SPF-Enabled' = $email.attributes.traits.'spf-enabled' + "<br>"
            $Array += $Result

我的目标是这样输出的:

HTML类型/ HTML:Office 365
HTML域/ HTML:somedomain
HTML服务位置/ HTML:云
HTML Webmail URL / HTML:https://outlook.office.com/owa/
启用HTML SPF的/ HTML:

谁能给我一些实现此目标的想法?非常感谢!

1 个答案:

答案 0 :(得分:0)

为什么不尝试使用PowerShell自定义对象?

$Result = foreach($email in $api_call.data){
    [PSCustomObject]@{
        Type = $email.attributes.traits.'type' + "<br>"
        Domains = $email.attributes.traits.'domain-s'.values.name + "<br>"
        'Service Location' = $email.attributes.traits.'service-location' + "<br>"
        'Webmail URL' = $email.attributes.traits.'webmail-url' + "<br>"
        'SPF-Enabled' = $email.attributes.traits.'spf-enabled' + "<br>"
    }
}

此结果将作为集合存储在$ Result变量中,您可以将其格式化为表$Result | format-table -autosize或将其导出为CSV:$Result | Export-CSV -path C:\SomeDir\FileName.csv

注意:我不确定变量包含哪些内容或要输入什么值,但这是使用PSCustomObject的语法。 您也可以查看该文章,以获得更好的理解: enter image description here

希望有帮助!