
Я постараюсь сделать это как можно более лаконично.
Я использую PowerShell 7.2.0 и не могу заставить where-object
команду или ее псевдонимы where
работать ?
.
Мне нужна та же функциональность, что и с where
командой в CMD.
Я пробовал команду и ее псевдонимы, но ни один из них ничего не возвращает. Я подтвердил, что они уже там (не нужно устанавливать псевдонимы) с get-alias
командой.
Как я могу это исправить?
решение1
Эквивалент вPowerShellявляетсяПолучить-ChildItem.
Без параметров это эквивалентно dir
cmd.
PS C:\...\DummyDesktop>gci
Directory: C:\Users\keith\DummyDesktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/30/2021 3:51 AM 11 logs.txt
-a---- 11/14/2021 11:07 PM 4833 Regex Whitespace Mode.txt
-a---- 11/9/2021 4:51 AM 1011 troubleshooting updates.txt
-a---- 11/9/2021 2:55 AM 143 Update Error Troubleshooting.url
- Если путь не указан, используется текущее местоположение.
- Чтобы включить подкаталоги текущего местоположения или указанного пути, используйте параметр
-REcurse
(-s
). - Многие простые поисковые запросы можно выполнить, используя различные параметры
Get-ChildItem
с литералами и/или подстановочными знаками. - Более сложные поиски могут потребовать передачи результатов
GetChildItem
вWhere-Object
. - Поскольку вам нужен полный путь, вам понадобится
FullName
свойство объекта FileInfo, возвращаемое функциейgci
.
PS C:\...\Documents>gci ventra*
Directory: C:\Users\keith\Documents
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/2/2016 12:02 PM 27 Ventra.txt
-a---- 4/5/2021 11:13 PM 181 Ventra.zip
PS C:\...\Documents>(gci ventra*).FullName
C:\Users\keith\Documents\Ventra.txt
C:\Users\keith\Documents\Ventra.zip
Приведенные вами примеры будут выглядеть так:
(gci pyton* -Recurse).FullName
- Выполняется из корня или папки, которая, как известно, является предком местоположения
python.exe
- При поиске из корня системного диска вам, скорее всего, понадобится использовать параметр
-ErrorAction SilentlyContinue
(-ea silent
) для подавленияAccess denied
ошибок.
решение2
Следующая функция сработала для меня, получив ту же функциональность, что и where
в cmd
:
function which ($command) {
Get-Command -Name $command -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Path -ErrorAction SilentlyContinue
}
решение3
Вы можете использовать where
утилиту, используемую CMD (например, where.exe python
).