【发布时间】:2019-04-15 13:38:17
【问题描述】:
我创建了一个PsCustomObject,当调用变量是ISE时,它会读取一个相关数据的表。但是,如果我尝试将PsCustomObject 与另一个对象进行比较,PsCustomObject 将无法正确读取。如果现有 CSV 中的任何行与 PSCustomObject 匹配,我想告诉脚本不要将数据导出到 CSV,换句话说,跳过 CSV 文件中的重复行。 CSV 可能有也可能没有多行。
$fileInfo = @(
[pscustomobject]@{
user_id = $user
studio = $studio
function = $Task
end_time_local = $creationTime
asin = $ASIN
variant = $variant
process_class_id = $processClass
}
)
$currentData = Import-Csv "$scansFolder\$fileName.csv"
if($fileInfo -ne $currentData){
$fileInfo | Export-Csv "$scansFolder\$fileName.csv" -Append -NoTypeInformation -Force
}
【问题讨论】:
-
导入的CSV是什么结构?如果它们相同,则使用
Compare-Objectcmdlet。 -
您的
$fileInfo变量是一个数组。您是否需要支持 多个 自定义对象从 CSV 中排除? -
@Lee_Dailey csv和自定义对象一样,有headers和
$fileInfo中提到的7项。 -
@mklement0 我认为这可能是问题所在,我尝试了以下类似的方法,但没有成功。
foreach($line in $currentData){ if($fileInfo -ne $currentData){ $fileInfo | Export-Csv "$scansFolder\$fileName.csv" -Append -NoTypeInformation -Force }}关于如何做到这一点的任何想法? -
@Garrett - 您可以使用
Compare-Objectcmdlet 来确定一个对象是否在类似对象的集合中。看看-IncludeEqual参数。