无法格式化时保留订单

时间:2017-05-28 17:32:40

标签: powershell

我正在尝试创建一个函数来记录word doc中的某些设置,并使文档中的信息易于阅读我需要保留原始对象属性的顺序。不幸的是,这意味着我无法“格式正确”。

$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此时重新排序列表。我不确定我的做法是否正确。

此函数实际上是一个递归函数,用于遍历对象树并输出结果。任何关于新方法的想法或纠正我原来的方法都会非常受欢迎。

2 个答案:

答案 0 :(得分:1)

以这种方式尝试:

 $p = $o.psobject.Properties | select -ExpandProperty Name

答案 1 :(得分:0)

我不明白你的意思

  

格式正确

但是从PowerShell 3开始,您可以创建有序的哈希表:

[ordered]@{
    number = 1
    fruit = 'Orange'
    Clothing = 'Shirt'
    Colour  = 'blue'
}