首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PSObject排序

PSObject排序
EN

Stack Overflow用户
提问于 2013-09-16 10:09:45
回答 2查看 6.9K关注 0票数 5

几天前,我正在尝试格式化一个与问题相关的PSObject。我的目标是这样的:

代码语言:javascript
复制
New-Object PSObject -Property @{
    "Version"= $winVersion.Caption
    "Processor Name" = $processorInfo.Name
    "Processor Manufacturer" = $processorInfo.Manufacturer
    "Processor Max Clock Speed" = $processorInfo.MaxClockSpeed     
} |format-list 

上述输出如下:

代码语言:javascript
复制
Processor Manufacturer    : GenuineIntel
Processor Max Clock Speed : 2201
Version                   : Microsoft Windows 8 Pro
Processor Name            : Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz

然而,这一点:

代码语言:javascript
复制
New-Object PSObject -Property @{
    "Windows Version"= $winVersion.Caption
    "Processor Name" = $processorInfo.Name
    "Processor Manufacturer" = $processorInfo.Manufacturer
    "Processor Max Clock Speed" = $processorInfo.MaxClockSpeed     
} |format-list 

给出以下输出:

代码语言:javascript
复制
Processor Manufacturer    : GenuineIntel
Processor Max Clock Speed : 2201
Processor Name            : Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz
Windows Version           : Microsoft Windows 8 Pro

没什么大不了的,但我想知道为什么格式会改变呢?它似乎从任何方面都不按字母顺序排列。此外,我尝试用排序对象(从A)对对象进行排序,但没有结果。这跟字符串有关吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-16 10:38:54

无法预测hashtable的顺序( accelerator to make an hashtable ordered),但在V2.0中,您需要像这样构建自定义对象以保持属性顺序:

代码语言:javascript
复制
$o = New-Object PSObject
 $o | add-member Noteproperty  "Version"  $winVersion.Caption
 $o | add-member Noteproperty  "Processor Name" $processorInfo.Name
 $o | add-member Noteproperty  "Processor Manufacturer" $processorInfo.Manufacturer
 $o | add-member Noteproperty  "Processor Max Clock Speed" $processorInfo.MaxClockSpeed

$o | format-list
票数 4
EN

Stack Overflow用户

发布于 2013-09-16 10:39:23

您仍然可以向对象中添加自定义方法以提供所需的格式,例如:

代码语言:javascript
复制
$test = New-Object PSObject -Property @{
    "Processor Manufacturer"="GenuineIntel"
    "Processor Max Clock Speed" = "2201"
    "Version"="Microsoft Windows 8 Pro"
}
Add-Member -MemberType ScriptMethod -Name "show" -Value {echo $this.version;echo $this."processor manufacturer";echo $this."Processor Max Clock Speed"} -inputObject $test

$test.show()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18825419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档