Экспорт CSV записывает результаты в одну строку. Как получить несколько строк? - PullRequest
0 голосов
/ 29 мая 2019

Я ищу дубликаты на общем диске, чтобы я мог сообщить пользователям, и они могут очистить их, прежде чем мы используем что-либо автоматизированное.Мой самый большой дубликат близок к 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.

1 Ответ

1 голос
/ 29 мая 2019

Разверните свои группы.Кроме того, лучше использовать конвейер.

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
...