You can try a foreach-loop and Out-Default or Out-Host to skip the rest of the pipeline (Host is Default output anyways), while also sending the object down the pipeline. Sample:
Get-ChildItem | Select-Object Name, FullName | ForEach-Object { #Send Name-value directly to console (default output) $_.Name | Out-Default #Send original object down the pipeline $_ } | Select-Object -ExpandProperty FullName | % { Start-sleep -Seconds 1; "Hello $_" }
You can create a filter to make it easy to reuse it.
#Bad filter-name, but fits the question. filter stdout_and { #Send Name-value directly to console (default output) $_.Name | Out-Default #Send original object down the pipeline $_ } Get-ChildItem | Select-Object Name, FullName | stdout_and | Select-Object -ExpandProperty FullName | % { Start-sleep -Seconds 1; "Hello $_" }