强制Convertto-html仅包含一个对象" MemberType" "属性"

时间:2015-06-11 18:21:15

标签: powershell

我有一个system.data.datarow对象数组。现在这些对象的属性具有我想要的信息。当我将这些对象传递给convertto-html时虽然它拾取了所有这些额外的垃圾,但我看到的行名称如RowError,RowState,Table-当我想要的只是对象属性时。

有没有办法我只能包含要转换为html的对象的属性(这意味着如果我在对象上执行Get-Member" MemberType"属性)。

我可以将这些对象转换为通用的psobject,而不必遍历它们并使用New-Object重建它们吗?

2 个答案:

答案 0 :(得分:1)

您可以使用PropertyGet-Member获取所有Select-Object类型属性的名称:

$Props = Get-Member -InputObject $DataRowObjects[0] -MemberType Property | Select-Object -ExpandProperty Name
$Html = $DataRowObjects | Select-Object -Property $Props | ConvertTo-Html

答案 1 :(得分:0)

接受的答案的唯一问题是它将字段的顺序从给定的字段名称更改为字母顺序

为了避免和保留 select 语句中的原始顺序,我使用了以下方法

$unwantedColumns = @('RowError','RowState','Table','ItemArray','HasErrors') # these guys get added automatically by Invoke-SqlCmd

$props = $sqlResult.PSObject.Properties.Name | Where-Object {$_ -NotIn $unwantedColumns}

$htmlBody = $sqlResult |
        Select-Object -Property $props |
        ConvertTo-Html @ConvertToHtmlArgs |
        Out-String