2014-12-08 9 views
4

Я пишу скрипты отчетности в Powershell и сбор до сводной таблицы элементов, как пустой объект с дополнительными свойствами добавил один за другим:Как получить свойства объекта 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?

ответ

11

Попробуйте это:

$fields = $list[0].psobject.properties | select name 
+0

Aha! Отлично. Благодарю вас. – AnotherHowie

Смежные вопросы