你可以使用
-split
操作符将原始输入字符串转换为数组:
$ProjectNames = "Project1,Project2,Project3,Project4" -split ','
$ProjectTypes = "web,batch,web,components" -split ','
然后创建一个空的哈希表来包含类型到项目名称的映射。
$ProjectsByType = @{}
最后,遍历这两个数组,按类型将项目名称分组:
for($i = 0; $i -lt $ProjectNames.Count; $i++){
if(-not $ProjectsByType.ContainsKey($ProjectTypes[$i])){
$ProjectsByType[$ProjectTypes[$i]] = @()
}
$ProjectsByType[$ProjectTypes[$i]] += $ProjectNames[$i]
}
现在您可以按项目类型分组生成所需的字符串:
$ProjectsByType.Keys |ForEach-Object {
$ProjectsByType[$_] -join ','
}
你也可以从这两个数组中创建对象并使用
Group-Object
进行分组:
$Projects = for($i = 0; $i -lt $ProjectNames.Count; $i++){
New-Object psobject -Property @{
Name = $ProjectNames[$i]
Type = $ProjectTypes[$i]
}
}
$Projects |Group-Object -Property Type
这更有趣,如果你想要进一步处理项目,但如果你只需要字符串,第一种方法更容易。
($input | ConvertFrom-Csv).PSObject.Properties | Group-Object Value | ForEach-Object {$_.Group.Name -join ','}
- user4003407