powershell - 使用 Powershell 在同一数组中重新组合常见项目值

标签 powershell

拜托,我需要帮助才能在 PowerShell 中使用数组执行此操作。 我有一个类似于下面 $a 的数组:

$a = @('**ABC**:XYZ','**LMN**:PQR','**ABC**:RST','YJQ:PRS','**LMN**:SDK')

我想将 $a 数组更改为 $b:

$b = @('**ABC**:XYZ,RST','**LMN**:PQR,SDK','YJQ:PRS')

想法是,所有在“:”之前具有公共(public)值的项目都应该以类似“common_value:x,y,z”的格式组合,但其他没有公共(public)值的项目应该单独保留。任何提示或解决方案将不胜感激。

最佳答案

一个简单粗暴的例子:

    $a = @('**ABC**:XYZ','**LMN**:PQR','**ABC**:RST','YJQ:PRS','**LMN**:SDK')
    
    $b=
    $a | 
    Select-ObJect @{Name = 'Name'; Expression = { $_.Split(':')[0]  }},
    @{Name = 'Group'; Expression = { $_.Split(':')[1] }} |
    Group-Object -Property Name |
    ForEach-Object{ "'$($_.Name):$($_.Group.Group -join ',')'"}
    
    $b = $b -join ','
    
    $b

输出:

'**ABC**:XYZ,RST','**LMN**:PQR,SDK','YJQ:PRS'

这也有效:

    $a = @('**ABC**:XYZ','**LMN**:PQR','**ABC**:RST','YJQ:PRS','**LMN**:SDK')
    
    $b =
    $a | Group-Object {$_.Split(':')[0]} |
    ForEach-Object{
        "'$($_.Name):$(($_.Group.Split(':') | Group-Object { $Global:i % 2; $Global:i++ })[1].Group -join ',')'"
    }
    
    $b = $b -join ','
    $b

关于powershell - 使用 Powershell 在同一数组中重新组合常见项目值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65744227/

相关文章:

powershell - 使用以 DisplayName 命名的文件夹导入 GPO - Powershell

powershell - 使用 Powershell 运行 Cake 脚本时,Jenkins 中出现未知命令错误

powershell - 方法调用失败,因为 [System.IO.FileInfo] 不包含名为 'op_Addition' 的方法

windows - ForEach ID 的 Group By ID

PowerShell 命令在文件名的特定位置添加字符

c# - 复杂 - 在 Powershell c# 中用 Regex 替换

json - 通过 powershell 将消息发布到 MS Teams

powershell - 使用 PowerShell 进行部分字符串替换

powershell - "You cannot call a method on a null-valued expression"在代码中使用参数时

powershell - 如何在 Windows Azure Powershell 中执行 .ps1 文件