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?

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.


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")

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.


23

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

Invoke-Item .

Alias ​​na to to ii.
VivekDev,


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.


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


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,


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

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")
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.