-Recurse
не является одним из "общих параметров" PowerShell. Поэтому он доступен не для всех командлетов. Если вам нужна функциональность -Recurse
для использования с командлетом, который его не поддерживает, вам нужно будет передать выходные данные из командлета, который его поддерживает.
В этом случае, похоже, что сначала вам нужно будет передать выходные данные через фильтрующий командлет (например, Where-Object
). Я попытался использовать -Include
с Invoke-Item
но не смог заставить его вести себя так, как вы этого хотите.
Пример:
Get-Childitem 'C:\Data\Test*' -Recurse | Where-Object {$_.Name -match "_dc.txt$"} | Invoke-Item
Расширено, с комментариями:
# 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
- это встроенный псевдоним для Get-ChildItem
-Recurse
может быть обрезано до -R
поскольку это единственный параметр с именем, начинающимся с "R" для Get-ChildItem
.
?
является встроенным псевдонимом для Where-Object
.
ii
является встроенным псевдонимом для Invoke-Item
.