Nie mogę znaleźć niczego na temat odpowiednika where
polecenia Powershell z cmd
. Czy powinienem to po prostu wywołać, cmd
czy może jest coś bardziej eleganckiego w PS?
61
Nie mogę znaleźć niczego na temat odpowiednika where
polecenia Powershell z cmd
. Czy powinienem to po prostu wywołać, cmd
czy może jest coś bardziej eleganckiego w PS?
Odpowiedzi:
Użyj
Get-Command
komendy, przekazując nazwę pliku wykonywalnego. Wypełnia właściwość Path zwróconego obiektu (typu ApplicationInfo ) w pełni rozstrzygniętą ścieżką do pliku wykonywalnego.źródło
gcm
zamiast zaGet-Command
każdym razem wpisywać całe słowogcm notepad
działa idealnie dla mnie, gdy chcę tylko zobaczyć, do którego pliku dzwonię.Jeśli chcesz mieć tę samą funkcjonalność bez wywoływania cmd, możesz dzwonić
where.exe
z programu PowerShell, o ileC:\Windows\System32
jest to możliwe. Poleceniewhere
(bez .exe) jest aliasowaneWhere-Object
, więc po prostu podaj pełną nazwę.źródło
Get-ChildItem C:\SomeDir -Recurse *.dll
To właściwie to, co robi stary where.exe ... czy była bardziej konkretna funkcjonalność, którą próbujesz naśladować?
Edycja: W odpowiedzi na komentarz Joshuy ... och, też chcesz przeszukać zmienne środowiskowe PATH? Nie ma problemu.
źródło
oh, you want to search your PATH environment variables too?
Um, tak, że to właśnie chodzi , abywhere
, w przeciwnym razie można po prostu używaćdir
. Der.:-P
where
nie jest wbudowanymcmd
poleceniem. Jest to samodzielna aplikacja (where.exe
), więc ściśle mówiąc, PowerShell nie „potrzebuje wymiany”.Dlaczego więc nie
where
działa w PowerShell? Wydaje się, że nic nie robi:Domyślnie
where
jest aliasowany do wbudowanego polecenia cmdlet PS.Dobrze to wiedzieć, ale czy istnieje sposób na uniknięcie dzwonienia
where-object
podczas próby połączeniawhere.exe
?Odpowiedź brzmi tak.
opcja 1
Zadzwoń
where.exe
z numerem wewnętrznym. (Jest to przydatny sposób na obejście innych problemów z aliasingiem i ustalaniem priorytetów rozszerzenia pliku).Opcja 2
Usuń alias.
Notatki dodatkowe
Odpowiedź zdana proponuje użycie
Get-Command
jako alternatywy. Chociaż jest nieco bardziej szczegółowy (nawet przy użyciu domyślnegogcm
aliasu), ma bogatszą funkcjonalność niżwhere.exe
. Jeśli są używane w skryptach, zwróć uwagę na subtelne różnice między nimi. Np.where.exe
Zwraca wszystkie dopasowania, podczas gdyGet-Command
zwraca tylko pierwszy wynik, chyba że podasz-TotalCount
parametr opcjonalny .I wreszcie, jeśli usuniesz domyślny
where
alias, możesz również rozważyć przypisanie go jako aliasu doGet-Command
. (Ale prawdopodobnie byłoby to wątpliwe.)źródło