Кажется, я не могу найти что-нибудь о Powershell, эквивалентном where
команде из cmd
. Должен ли я просто позвонить с cmd
или есть что-то более элегантное в PS?
62
Кажется, я не могу найти что-нибудь о Powershell, эквивалентном where
команде из cmd
. Должен ли я просто позвонить с cmd
или есть что-то более элегантное в PS?
Ответы:
Используйте
Get-Command
командлет, передав ему имя исполняемого файла. Он заполняет свойство Path возвращаемого объекта (типа ApplicationInfo ) полностью разрешенным путем к исполняемому файлу.источник
gcm
вместо того, чтобы вводитьGet-Command
слово целиком каждый разgcm notepad
работал отлично для меня, когда я просто хочу посмотреть, какой файл я звоню.Если вам нужна такая же функциональность без вызова cmd, вы можете звонить
where.exe
из powershell, покаC:\Windows\System32
вы на пути. Командаwhere
(без .exe) имеет псевдонимWhere-Object
, поэтому просто укажите полное имя.источник
Get-ChildItem C:\SomeDir -Recurse *.dll
Это в значительной степени то, что делает старый файл where.exe ... была ли более специфическая функциональность, которую вы пытаетесь имитировать?
Изменить: В ответ на комментарий Джошуа ... о, вы тоже хотите искать переменные среды PATH? Нет проблем.
источник
oh, you want to search your PATH environment variables too?
Хм, да, это весь смысл вwhere
противном случае вы можете просто использоватьdir
. Производная:-P
where
не встроеннаяcmd
команда Это отдельное приложение (where.exe
), поэтому, строго говоря, PowerShell «не нуждается в замене».Так почему же не
where
работает в PowerShell? Вроде ничего не делаетПо умолчанию
where
используется псевдоним встроенного командлета PS.Ну, это приятно знать, но есть ли способ избежать звонка
where-object
при попытке позвонитьwhere.exe
?Ответ - да.
Опция 1
Звонок
where.exe
с добавочного номера. (Это удобный способ обойти другие проблемы определения приоритетов и псевдонимов.)Вариант 2
Удалить псевдоним.
Примечания стороны
Ответ Здана предлагает использовать
Get-Command
в качестве альтернативы. Хотя он немного более многословен (даже при использованииgcm
псевдонима по умолчанию ), он обладает более широкими функциональными возможностями, чемwhere.exe
. Если используется в сценариях, обратите внимание на тонкие различия между ними. Например,where.exe
возвращает все совпадения, тогда какGet-Command
возвращает только первый результат, если вы не включите необязательный-TotalCount
параметр.И наконец, если вы удалите
where
псевдоним по умолчанию , вы также можете рассмотреть возможность переназначения этого псевдонимаGet-Command
. (Но это, вероятно, будет иметь сомнительную выгоду.)источник