几天前,我正在尝试格式化一个与问题相关的PSObject。我的目标是这样的:
New-Object PSObject -Property @{
"Version"= $winVersion.Caption
"Processor Name" = $processorInfo.Name
"Processor Manufacturer" = $processorInfo.Manufacturer
"Processor Max Clock Speed" = $processorInfo.MaxClockSpeed
} |format-list 上述输出如下:
Processor Manufacturer : GenuineIntel
Processor Max Clock Speed : 2201
Version : Microsoft Windows 8 Pro
Processor Name : Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz然而,这一点:
New-Object PSObject -Property @{
"Windows Version"= $winVersion.Caption
"Processor Name" = $processorInfo.Name
"Processor Manufacturer" = $processorInfo.Manufacturer
"Processor Max Clock Speed" = $processorInfo.MaxClockSpeed
} |format-list 给出以下输出:
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)对对象进行排序,但没有结果。这跟字符串有关吗?
发布于 2013-09-16 10:38:54
无法预测hashtable的顺序( accelerator to make an hashtable ordered),但在V2.0中,您需要像这样构建自定义对象以保持属性顺序:
$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发布于 2013-09-16 10:39:23
您仍然可以向对象中添加自定义方法以提供所需的格式,例如:
$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()https://stackoverflow.com/questions/18825419
复制相似问题