我有一个无法克服的错误。当我运行脚本时,获得了这段代码,这是错误地删除了唯一值:
import-csv "$LocalPath\A1-$abbrMonth$Year.csv" |
where {$_."CustomerName" -match $Customersregex} |
select "SubmitterID","SubmitterName","JobDate","JobTime",@{Name="Form";Expression={if ($_.FormName -match "Copy"){"C"};if ($_.FormName -match "Letter"){"L"} else {""} }},"TotalDocs",@{Name="AddnPages";Expression={$_.TotalAdditionalPages}},"InputFilename",@{Name="ActualDocs";Expression={[string]([int]$_.RegularDocs + [int]$_.UnqualifiedDocs)}}|
sort "InputFilename" -Unique |
export-csv "$LocalPath\A2-$abbrMonth$Year.csv" -NoTypeInformation
它发生在“ sort“ InputFilename” -Unique“行中,但是当我将其剪切并逐行执行时它可以正常工作,但是不在原始脚本中。
还有其他方法可以根据列的值删除重复项吗?我尝试在Select-Object语句上使用“ -unique”参数,但找不到将其限制为仅一列的方法。
编辑:为澄清我遇到的问题,我有一个大的会计数据列表。我正在尝试使用“ Sort -unique”删除重复的条目。在上面的代码运行之后,缺少的条目不应该是因为它们是唯一的。我可以将它们隔离在自己的CSV中,运行上面的代码,并且应该存在的所有条目都存在,但是,当我通过上面的代码(仅该代码,没有其他内容)运行我的主CSV文件并搜索这些条目时,失踪。 编辑2:好像是数据文件有问题。真是的
答案 0 :(得分:3)
您可以始终对事物进行分组,然后展开分组中的第一项。速度不快,但是可以满足您的工作要求。
import-csv "$LocalPath\A1-$abbrMonth$Year.csv" |
where {$_."CustomerName" -match $Customersregex} |
group InputFilename |
% { $_.Group[0] } |
select "SubmitterID","SubmitterName","JobDate","JobTime",@{Name="Form";Expression={if ($_.FormName -match "Copy"){"C"};if ($_.FormName -match "Letter"){"L"} else {""} }},"TotalDocs",@{Name="AddnPages";Expression={$_.TotalAdditionalPages}},"InputFilename",@{Name="ActualDocs";Expression={[string]([int]$_.RegularDocs + [int]$_.UnqualifiedDocs)}}|
sort "InputFilename" |
export-csv "$LocalPath\A2-$abbrMonth$Year.csv" -NoTypeInformation