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