Я пытаюсь создать функцию для документирования некоторых настроек в документе Word и сделать информацию в документе легко читаемой, мне нужно сохранить порядок свойств исходного объекта. К сожалению, это означает, что я не могу «правильно отформатировать».

$o = [PSCustomObject]@{
    number = 1
    fruit = 'Orange'
    Clothing = 'Shirt'
    Colour  = 'blue'
}

$p = $o | get-member -type NoteProperty | Select-Object -ExpandProperty Name

foreach ($n in $p) {
    Write-Output "$n $($o.$n)"  #this line is actually function to write a line into the word doc taking $n and $($o.$n) as parameters
}

Часть кода, которая имеет проблему, '$ o | get-member -type NoteProperty ', поскольку Powershell переупорядочивает список на этом этапе. Я не уверен, что мой подход правильный.

Эта функция фактически будет рекурсивной функцией для обхода дерева объектов и вывода результатов. Любые идеи о новом подходе или о том, как исправить мой первоначальный подход, будут приветствоваться.

1
Jim Moyle 28 Май 2017 в 20:32

2 ответа

Лучший ответ

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

 $p = $o.psobject.Properties | select -ExpandProperty Name
1
mjolinor 28 Май 2017 в 17:40

Я не понимаю, что вы подразумеваете под

правильный формат

Но начиная с PowerShell 3 вы можете создавать упорядоченные хеш-таблицы:

[ordered]@{
    number = 1
    fruit = 'Orange'
    Clothing = 'Shirt'
    Colour  = 'blue'
}
0
Swonkie 28 Май 2017 в 17:41