-Recurse não é um dos "Parâmetros comuns" do PowerShell. Portanto, não está disponível em todos os cmdlets. Se você precisar da funcionalidade de -Recurse para usar com um cmdlet que não oferece suporte a ela, será necessário canalizar a saída de um cmdlet que ofereça suporte a ela.
Nesse caso, parece que você também precisará transmitir a saída por meio de um cmdlet de filtragem (como Where-Object ) primeiro. Eu tentei usar -Include com Invoke-Item , mas não consegui fazê-lo se comportar como você quer.
Exemplo:
Get-Childitem 'C:\Data\Test*' -Recurse | Where-Object {$_.Name -match "_dc.txt$"} | Invoke-Item
Expandido, com comentários:
# Recursively search folders with names beginning 'C:\Data\Test' and return the objects found.
Get-ChildItem 'C:\Data\Test*' -Recurse |
# Filter objects to only those with names ending in '_dc.txt'.
Where-Object {$_.Name -match "_dc.txt$"} |
# Perform the default action (for .txt files, this is normally "Open with Notepad") on the objects.
Invoke-Item
Golfed:
ls 'C:\Data\Test*' -R|?{$_.Name -match "_dc.txt$"}|ii
-
lsé um alias interno paraGet-ChildItem -
-Recursepode ser cortado para apenas-R, já que é o único parâmetro com um nome que começa com "R" paraGet-ChildItem. -
?é um alias interno paraWhere-Object. -
iié um alias interno paraInvoke-Item.