Я ищу дубликаты на общем диске, чтобы я мог сообщить пользователям, и они могли очистить его, прежде чем мы будем использовать что-либо автоматизированное. Мой самый большой дубликат почти 400 копий, но вся информация находится в одной строке.
Мой запрос дает правильные результаты:
$a = Get-ChildItem -Path "S:\" -File -Recurse |
Select-Object -Property Fullname, @{N='Hash';E = {(Get-FileHash $_.FullName).Hash}}
$cnt = $a | Group-Object -Property Hash
$cnt |
Select-Object Count, @{N='FullName';E = {($_.Group).FullName}}, @{N='Hash';E = {($_.Group).Hash}} |
Sort-Object -Property Count -Descending |
Export-Csv C:\Temp\S_Drive_Counts.csv
Вот пример моих результатов, где каждая запись находится в одной строке:
"Count","FullName","Hash" "2","S:\Generation 1\Certification Authority.txt S:\Generation 2\Certification Authority.txt","498868376A5377F731593E9F96EC99F34C69F47537C81B9B32DBAC9321462B83 498868376A5377F731593E9F96EC99F34C69F47537C81B9B32DBAC9321462B83"
Однако мне нужно передать эту информацию, поэтому я бы хотел, чтобы каждая запись была в отдельной строке, например:
"Count","FullName","Hash" "2","S:\Generation 1\Certification Authority.txt","498868376A5377F731593E9F96EC99F34C69F47537C81B9B32DBAC9321462B83" "2","S:\Generation 2\Certification Authority.txt","498868376A5377F731593E9F96EC99F34C69F47537C81B9B32DBAC9321462B83"
При необходимости я могу выполнить некоторые манипуляции со строками в CSV, но я ищу способ получить его в правильном формате перед экспортом в CSV.
Разверните свои группы. Кроме того, лучше используйте конвейер.
Get-ChildItem -Path 'S:\' -File -Recurse |
Select-Object Fullname, @{n='Hash';e = {(Get-FileHash $_.FullName).Hash}} |
Group-Object Hash |
ForEach-Object {
$cnt = $_.Count
$_.Group | Select-Object @{n='Count';e = {$cnt}}, FullName, Hash
} |
Sort-Object Count, Hash, FullName -Descending |
Export-Csv 'C:\Temp\S_Drive_Counts.csv' -NoType
Это правильное замечание по поводу групп, но в данном случае это удобный способ пройти каждый шаг без необходимости повторного сканирования диска. Спасибо!