在 PowerShell 中对 属性 上的对象进行分组

Grouping objects on the property in PowerShell

我希望将 Application 和 ShortcutName 列归为一列,同时保持 Version 和 Architecture 列原样:

$object | Select-Object -Property Application, Version, Architecture, ShortcutName |
  Sort-Object -Property @{expression="Architecture";Descending=$true},Application | 
    Out-GridView

我该怎么做?

在 PowerShell 中,您可以使用 Group-Object 按属性对对象进行分组。你想要的不是那种意义上的分组,而是定义一个新的自定义 属性.

您使用 NameExpression 键创建自定义属性哈希表。

像这样的东西可能会成功。

$Expression = {
    if ($_.Application) {
        $_.Application
    } 
    else {
        $_.Shortcut
    } 
}

$object | 
    Select-Object -Property @{ Name = 'Application'; Expression = $Expression }, Version, Architecture | 
    Sort-Object -Property @{expression="Architecture";Descending=$true},Application | 
    Out-GridView

表达式检查 Application 属性 是否被填充。如果是,它将使用现有的应用程序名称,否则它将使用 Shortcut 属性 作为应用程序名称。