我在Powershell中编写了一些报告脚本,并收集了一个项目摘要表作为空白对象,并逐个添加了其他属性:
$cmClusters = @()
foreach ($Cluster in Clusters) {
$cmCluster = New-Object System.Object
$cmCluster | Add-Member -type NoteProperty -Name VC -Value $strVC
$cmCluster | Add-Member -type NoteProperty -Name Name -Value $Cluster.name
# etc...
$cmClusters += $cmCluster;
}
如果我只是在结尾处转储$ cmClusters,我会按照添加它们的顺序获取格式列表输出。
但是,我希望写一个通用的"将这个对象集合转储到excel选项卡"用于生成我的报告的函数,该报告将是来自不同对象列表的几个类似的工作表选项卡。
看起来像这样:
function DumpToExcel($workbook, $tabTitle, $list)
{
$sheet = $workbook.worksheets.add()
$sheet.Name = $tabTitle
$col = 1
$row = 1
$fields = $list[0] | Get-Member -MemberType NoteProperty | Select-Object *
Foreach ($field in $fields) {
$sheet.cells.item($row,$col++) = $field.Name
}
$heading = $sheet.UsedRange
$heading.Font.Bold = $True
$row++
Foreach ($cmCluster in $list) {
$col=1
Foreach ($field in $fields) {
$sheet.cells.item($row,$col++) = $cmCluster.($field.Name)
}
$row++
}
$sheet.UsedRange.EntireColumn.AutoFit() | Out-Null
}
有效,但属性名称现在按字母顺序排列。
我可以使用什么来按照Format-List的相同顺序获取我的属性列表?
答案 0 :(得分:14)
试试这个:
$fields = $list[0].psobject.properties | select name