You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按属性值对PowerShell的PSCustomObject数组排序?

PowerShell中PSCustomObject数组按属性排序的解决方案

你的代码存在两个关键问题导致排序失败,修正后即可实现按ProductCode排序的需求:

问题1:for循环起始条件错误

原代码中for ($i -eq 1; $i -lt 50; $i++)里的$i -eq 1是比较操作而非赋值,这会导致循环完全不执行,$products数组始终为空。需改为赋值操作$i = 1。

问题2:Write-Host中断管道

Write-Host仅负责向控制台输出文本,不会将对象传递给后续管道命令,因此后面的Sort-Object无法接收到$products数组,自然无法完成排序。直接移除Write-Host即可。

修正后的完整代码

$products = @()
for ($i = 1; $i -lt 50; $i++){
   $code = -join ((65..90) + (97..122) | Get-Random -Count 5 | ForEach-Object {[char]$_})

   $value = [PSCustomObject]@{ }
   $value | Add-Member -MemberType NoteProperty -Name ProductId -Value $i
   $value | Add-Member -MemberType NoteProperty -Name ProductCode -Value $code
   $products += $value
}

# 按ProductCode排序并输出结果
$products | Sort-Object -Property ProductCode

如果需要更清晰的表格格式输出,可追加Format-Table命令:

$products | Sort-Object -Property ProductCode | Format-Table ProductId, ProductCode -AutoSize

额外说明

  • 默认Sort-Object对字符串采用不区分大小写排序,若需要区分大小写,添加-CaseSensitive参数即可:Sort-Object -Property ProductCode -CaseSensitive
  • 你注释里的第二种PSCustomObject创建写法更简洁,修正循环条件后可直接替代第一种写法。

内容的提问来源于stack exchange,提问作者user2209131

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:24:57