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.