请查看
Get-Variable | Sort-Object -property Value
在PowerShell提示符下。您可能会看到值已全部排序。有一种排序,一些块似乎已被排序,但介于两者之间 - 至少在我的PowerShell(V4)中有很多项目位于完全荒谬的位置。
有人能说明Sort-Object
在这种情况下失败的原因吗?
THX
阿明。
答案 0 :(得分:3)
未定义两个不同类型的对象之间的顺序(除非明确定义)。因此,当您尝试对对象进行排序时,您无法真正期望它们遵循您认为有意义的内容,甚至是任何真实的逻辑。
如果您将它们转换为通用类型,例如通过首先将它们转换为字符串,您将获得正确的订单:
Get-Variable | sort { [string] $_.Value }
答案 1 :(得分:1)
它很难按照您的预期对结果进行排序,因为这些值都具有不同的数据类型。即使你看到的是字符串值,这些值中的每一个都有一个特定的数据类型,如字符串,整数,布尔值等等。没有一致的规则集可以正确地对所有这些值进行排序。如果对变量名称而不是值进行相同操作,则会看到一致的排序 - 这是因为变量名称本质上是字符串值,可以按字母顺序排序。