我正在尝试查找非唯一文件的脚本。
该脚本应使用一个包含数据的.csv文件:文件名,LastWriteTime和Length。然后,我尝试基于该.csv创建另一个.csv,该.csv仅包含Name + Length + LastWriteTime组合为非唯一的那些对象。
我尝试使用$csvfile
包含文件列表的以下脚本:
$csvdata = Import-Csv -Path $csvfile -Delimiter '|'
$csvdata |
Group-Object -Property Name, LastWriteTime, Length |
Where-Object -FilterScript { $_.Count -gt 1 } |
Select-Object -ExpandProperty Group -Unique |
Export-Csv $csvfile2 -Delimiter '|' -NoTypeInformation -Encoding Unicode
$csvfile
由以下人员创建:
{
Get-ChildItem -Path $mainFolderPath -Recurse -File |
Sort-Object $sortMode |
Select-Object Name, LastWriteTime, Length, Directory |
Export-Csv $csvfile -Delimiter '|' -NoTypeInformation -Encoding Unicode
}
(Get-Content $csvfile) |
ForEach-Object { $_ -replace '"' } |
Out-File $csvfile -Encoding Unicode
但是不知何故,$csvfile2
只有一个(第一个)非唯一记录。有谁知道如何改进它,以便可以列出所有非唯一记录?
您需要使用-Property * -Unique
获取唯一对象的列表。但是,您不能在此处同时使用-Property
和-ExpandProperty
,因为您希望将后一个参数应用于输入对象($_
),并将前一个参数应用于这些输入对象的已经扩展的属性($_.Group
)。
首先展开属性Group
,然后选择唯一的对象:
... |
Select-Object -ExpandProperty Group |
Select-Object -Property * -Unique |
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句