Czy można otworzyć okno Eksploratora Windows z PowerShell?

304

Jestem pewien, że to musi być możliwe, ale nie mogę się dowiedzieć, jak to zrobić.

Jakieś wskazówki?

Lachmania
źródło

Odpowiedzi:

665

Posługiwać się:

ii .

co jest skrótem od

Invoke-Item .

Jest to jedna z najczęstszych rzeczy, które piszę w wierszu poleceń programu PowerShell.

EBGreen
źródło
3
To zabawne, że nikt nie odpowiedział na tę najprostszą odpowiedź oprócz ciebie. :)
halr9000,
15
Jestem bardzo prostą osobą.
EBGreen,
85
To polecenie jest skrótem od Invoke-Item. Kropka po nim może być dowolną ścieżką.
M. Dudley,
Niesamowita, bardzo prosta odpowiedź! Lubię to.
Anthony Liriano
Tak więc domyślnym pierwszym parametrem iijest explorer, drugim parametrem jest ścieżka.
Timo
145

Masz kilka opcji:

  • Program PowerShell szuka plików wykonywalnych na Twojej ścieżce, podobnie jak cmd.exe. Możesz więc po prostu wpisać explorer w monicie PowerShell. Za pomocą tej metody można również przekazywać argumenty cmd-line (patrz http://support.microsoft.com/kb/314853 )
  • Polecenie cmdlet Invoke-Item umożliwia uruchomienie pliku wykonywalnego lub otwarcie pliku (lub zestawu plików) z poziomu Windows PowerShell. Alias : ii
  • użyj system.diagnostics.process

Przykłady:

PS C:\> explorer
PS C:\> explorer .
PS C:\> explorer /n
PS C:\> Invoke-Item c:\path\
PS C:\> ii c:\path\
PS C:\> Invoke-Item c:\windows\explorer.exe
PS C:\> ii c:\windows\explorer.exe
PS C:\> [diagnostics.process]::start("explorer.exe")
Codeape
źródło
5
Możesz także zrobić: invoke-item c: \ path \
x0n
Jest to najlepiej sformułowana i najbardziej pouczająca odpowiedź tutaj, i powinna również zawierać inne uprzywilejowane odpowiedzi tutaj, zwłaszcza „ii”.
DaveD
iijest pseudonimInvoke-Item
Kolob Canyon
32

Użyj dowolnego z tych:

  1. start .
  2. explorer .
  3. start explorer .
  4. ii .
  5. invoke-item .

Możesz zastosować dowolne z tych poleceń w PowerShell.

Na wypadek gdybyś chciał otworzyć eksploratora z wiersza poleceń, dwa ostatnie polecenia nie działają, a pierwsze trzy działają dobrze.

20B2
źródło
23

Wystarczy użyć polecenia Invoke-Itemcmdlet. Na przykład, jeśli chcesz otworzyć okno eksploratora w bieżącym katalogu, możesz:

Invoke-Item .
tomasr
źródło
Alias ​​na to to ii.
VivekDev,
20
explorer .
Daniel Kreiseder
źródło
Tego używam od lat, ale ostatnio explorerwydaje mi się, że nie
nadążam
18

Natknąłem się na to pytanie, szukając sposobu, aby otworzyć okno Eksploratora z PowerShell, a także wybrać plik. Dodaję tę odpowiedź, na wypadek gdyby inni z niej spotkali z tego samego powodu.

Aby uruchomić Eksploratora i wybrać plik, użyj Invoke-Expression:

Invoke-Expression "explorer '/select,$filePath'"

Są prawdopodobnie inne sposoby, aby to zrobić, ale zadziałało to dla mnie.

shovavnik
źródło
10
$startinfo = new-object System.Diagnostics.ProcessStartInfo 
$startinfo.FileName = "explorer.exe"
$startinfo.WorkingDirectory = 'D:\foldername'

[System.Diagnostics.Process]::Start($startinfo)

Mam nadzieję że to pomoże

Alex
źródło
1
Nie wiem, dlaczego jest to przegłosowane - nie widzę, żeby głosowało za brakiem elegancji, ale nadal jest to dobra (choć myląca) odpowiedź :) Dostajesz moje UP.
slipsec
1
Zgadzam się. Jest o wiele więcej kodu, ale pozwala na pewną elastyczność.
Mike Shepard,
Gdy używam tego kodu, otwiera on Eksploratora, ale nie katalog, który przekazałem jako WorkingDirectory. Po prostu otwiera folder Biblioteki. Odpowiedź przesłana przez shovavnika robi to poprawnie w jednym wierszu.
Phoenix14830,
4
start explorer.exe 

Proste polecenie jednowierszowe

powershelluser
źródło
2

Chciałem napisać to jako komentarz, ale nie mam 50 reputacji.

Wszystkie odpowiedzi w tym wątku mają na celu użycie Invoke-Item lub bezpośrednio explorer.exe; nie jest to jednak całkowicie synonimem „otwórz folder zawierający”, więc jeśli chodzi o otwarcie okna Eksploratora, jak podaje pytanie, jeśli chcielibyśmy zastosować odpowiedź do określonego pliku, pytanie tak naprawdę nie zostało jeszcze udzielone.

na przykład,

Invoke-Item C:\Users\Foo\bar.txt
explorer.exe C:\Users\Foo\bar.html

^ te dwa polecenia spowodowałyby wywołanie Notepad.exe lub Firefox.exe odpowiednio w dwóch plikach, a nie okno explorer.exe w C: \ Users \ Foo \ (zawierający katalog).

Podczas gdy ktoś wydawał to polecenie z PowerShell, nie byłoby to nic wielkiego (i tak mniej pisania), jeśli ktoś pisze skrypt i musi „otworzyć zawierający folder” na zmiennej, staje się kwestią dopasowania łańcucha w celu wyodrębnienia katalogu z pełna ścieżka do pliku.

Czy nie ma prostego polecenia „Open-Containing-Folder” takiego, że zmienna mogłaby zostać podstawiona?

na przykład,

$foo = "C:\Users\Foo\foo.txt"    
[some code] $fooPath
# opens C:\Users\Foo\ and not the default program for .txt file extension
Kanapka T.
źródło
2
Invoke-Item ([io.fileinfo] „C: \ temp \ file.txt”). Katalog
Dave_J
Alternatywa, która jest zasadniczo taka sama, ale zachowuje to wszystko w cmdletach Powershell: ii (Split-Path "C: \ temp \ file.txt")
EBGreen
0

Jest to jedyna rzecz, która pasuje do moich unikalnych ograniczeń, że chcę, aby folder był otwierany jako karta Quizo w dowolnym istniejącym oknie Eksploratora.

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
Beej
źródło