Тройник-объект на два трубопровода? - PullRequest
2 голосов
/ 21 октября 2019

У меня есть следующий код.

$summary = . {
    while ($true) { 
        # Generating huge list of psobject 
    }
} | 
Tee-Object -FilePath 'fname.csv' | # Need to process the input objects before writing to CSV
    Group-Object -Property xxx | Select Name,Count

Однако мне нужно обработать входные объекты перед записью в fname.csv. Можно ли разделить объект на два конвейера?

Я пробовал

$summary = . {
    while ($true) { 
        # Generating huge list of psobject 
    }
} | 
For-Each {
    $_ | ConvertTo-Csv -NoTypeInformation | Out-File -Append 'file.csv'
    $_
} |
Group-Object -Property xxx | Select Name,Count

Но заголовки повторяются в каждой строке файла file.csv.

Ответы [ 3 ]

4 голосов
/ 21 октября 2019

Я не уверен, что ты хочешь делать. Это помогает? Объекты из get-process передаются в два разных конвейера.

get-process cmd | foreach-object { $_ | measure-object
                                   $_ | export-csv -append whatever.csv }
1 голос
/ 21 октября 2019

Это должно сделать работу в вопросе. Тем не менее, он не разделяется на два конвейера, которые могут понадобиться в некоторых случаях.

$summary = . {
    while ($true) { 
        # Generating huge list of psobject 
    }
} | 
ForEach {
    $_ | Export-Csv -NoTypeInformation -Append 'file.csv'
    $_
} |
Group-Object -Property xxx | Select Name,Count
0 голосов
/ 21 октября 2019

Следуя указаниям @ mklement0, приведенные ниже упрощают его,

Get-Process excel | Tee-Object -Variable process | group processname | select name, count
$process | Export-Csv "D:\Op_GetProcessExcel.csv" -NoTypeInformation

Предыдущее предложение

Как указывал @AnsgarWiechersчто-то вроде следующего должно работать для вас,

Get-Process | 
    group processname | 
    select name, count | 
    ConvertTo-Csv -NoTypeInformation | 
    Tee-Object "C:\Op_GetProcess.csv"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...