Powershell — Объединить два конвейера в один

#python #python-3.x #powershell #pipeline #pylint

#python #python-3.x #powershell #конвейер #pylint

Вопрос:

Я использую Powershell (версия 5.1.17763.1007) и хочу объединить два конвейера в один. Их содержимое очень похоже; Они рекурсивно ищут файлы Python из папки в ее вложенные папки и генерируют отчеты о компоновке для этих файлов Python, используя Pylint и prospector соответственно (см. https://www.pylint.org / и https://pypi.org/project/prospector / )

 $path_to_files = "C:Users$env:UserNameDesktopmy_project_folderlinter_reports"

# Get all Python modules in folder and generate Pylint reports
Get-ChildItem -Path $path_to_files -Recurse -Filter *.py |
  ForEach-Object { pylint $_.Name |
                   Out-File -FilePath "pylint_results_$($_.Name.TrimEnd(".py")).txt"
                   }

# Get all Python modules in folder and generate Prospector reports
Get-ChildItem -Path $path_to_files -Recurse -Filter *.py |
  ForEach-Object { prospector $_.Name |
                   Out-File -FilePath "prospector_results_$($_.Name.TrimEnd(".py")).txt"
                   }
  

Я экспериментировал с командлетом Tee-Object ( https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/tee-object?view=powershell-7 ), это лучший подход?
Я ищу что-то вроде этого (псевдокод):

 Get-ChildItem -Path $path_to_files -Recurse -Filter *.py |
  ForEach-Object Tee-Object { pylint $_.Name |
                   Out-File -FilePath "pylint_results_$($_.Name.TrimEnd(".py")).txt"
                   } |
                            { prospector$_.Name |
                   Out-File -FilePath "prospector_results_$($_.Name.TrimEnd(".py")).txt"
                   }
  

Ответ №1:

почему бы не выполнить две команды друг за другом?

 $path_to_files = "C:Users$env:UserNameDesktopmy_project_folderlinter_reports"

# Get all Python modules in folder and generate Pylint and prospector reports
Get-ChildItem -Path $path_to_files -Recurse -Filter *.py |
  ForEach-Object { pylint $_.Name |
                   Out-File -FilePath "pylint_results_$($_.Name.TrimEnd(".py")).txt"

                   prospector $_.Name |
                   Out-File -FilePath "prospector_results_$($_.Name.TrimEnd(".py")).txt"
                   }