我有一个用于帮助台呼叫的CSV文件。根据它具有的更新次数,同一票证可能包含1,2或甚至5条记录。 (一个字段不同,所有其他字段都相同)。
我想采用大多数重复的记录并创建一条记录,并将差异连接到其中。在过去编程,但作为PowerShell的新手,我可以使用一些帮助。
所以,基于我之前提出的一个问题,这是我到目前为止所拥有的。假设这样的数据:
ID, Date, Comment 345, 1/1/16, Moss has reported a fire in the I/T Room 345, 1/1/16, Never mind, he has sent an e-mail about it. 346, 1/2/16, Someone on the 5th floor is complaining about a man under her desk. 347, 2/1/16, Jen says she has broken the Internet. 347, 2/1/16, Douglas is very angry, we need a fix ASAP! 347, 2/1/16, Roy was playing a joke on her. Closing ticket.
我有以下代码:
$FileList = Import-Csv "Call List.csv"
$incidents = $FileList | Group ID
foreach($group in $incidents)
{
# What goes here?
}
如何从组中的第2行,第3行等处获取注释,将其连接到第一行中的注释,并将文件写出来?
答案 0 :(得分:4)
Group-Object生成一个名称和组的对象,Group包含该组中的所有项目。您可以使用以下内容提取它们并创建一个新对象:
$incidents = $FileList | Group-Object ID | % {
New-Object psobject -property @{
ID = $_.Name
Date = $_.Group[0].Date
Comment = ($_.Group | Select -Expandproperty Comment) -Join "`n"
}
}
(未按我目前在Mac上测试)
答案 1 :(得分:1)
我首先会获得唯一ID的列表,例如:
$Ids = $FileList | Select-Object -ExpandProperty Id -Unique
然后我查看门票清单并制作一份报告"对于每个ID:
foreach($Id in $Ids){
# Get all incident logs for this Id:
$logs = $FileList | ?{$_.Id -eq $Id}
$report = ""
foreach($log in $logs){
$report += $log.Date + ": " + $log.Comment + "; "
}
# Now you can write the text out
$report | Out-File $Outfile -Append
}
希望能给你一个想法。