Ist es möglich, ein Windows Explorer-Fenster über PowerShell zu öffnen?


304

Ich bin mir sicher, dass dies möglich sein muss, aber ich kann nicht herausfinden, wie es geht.

Irgendwelche Hinweise?

Antworten:


666

Verwenden:

ii .

das ist die Abkürzung für

Invoke-Item .

Dies ist eines der häufigsten Dinge, die ich in der PowerShell-Befehlszeile eingebe.


3
Es ist lustig, dass niemand außer Ihnen diese einfachste Antwort beantwortet hat. :)
halr9000

15
Ich bin eine sehr einfache Person.
EBGreen

85
Dieser Befehl steht für Invoke-Item. Der Punkt danach kann ein beliebiger Pfad sein.
M. Dudley

Tolle, sehr einfache Antwort! Ich mag das.
Anthony Liriano

Der erste Standardparameter von iiist also der explorerzweite Parameter ist path.
Timo

145

Sie haben einige Möglichkeiten:

  • Powershell sucht in Ihrem Pfad nach ausführbaren Dateien, genau wie cmd.exe. Sie können also einfach Explorer an der Powershell-Eingabeaufforderung eingeben. Mit dieser Methode können Sie auch cmd-Zeilenargumente übergeben (siehe http://support.microsoft.com/kb/314853 ).
  • Das Cmdlet Invoke-Item bietet eine Möglichkeit, eine ausführbare Datei auszuführen oder eine Datei (oder einen Satz von Dateien) in Windows PowerShell zu öffnen. Alias : ii
  • Verwenden Sie system.diagnostics.process

Beispiele:

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
Sie können auch: invoke-item c: \ path \
x0n

Dies ist die am besten formulierte und informativste Antwort hier und sollte auch die anderen positiv bewerteten Antworten hier enthalten, insbesondere "ii".
DaveD

iiist ein Alias ​​vonInvoke-Item
Kolob Canyon

32

Verwenden Sie eine der folgenden Optionen:

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

Sie können jeden dieser Befehle in PowerShell anwenden.

Nur für den Fall, dass Sie den Explorer über die Eingabeaufforderung öffnen möchten, funktionieren die letzten beiden Befehle nicht und die ersten drei funktionieren einwandfrei.


23

Verwenden Invoke-ItemSie einfach das Cmdlet. Wenn Sie beispielsweise ein Explorer-Fenster im aktuellen Verzeichnis öffnen möchten, haben Sie folgende Möglichkeiten:

Invoke-Item .

Ein Alias ​​dafür ist ii.
VivekDev

20
explorer .

Dies ist, was ich seit Jahren benutze, aber in letzter Zeit explorerscheint es mir aus dem Weg zu gehen
DaveD

18

Ich bin auf diese Frage gestoßen, als ich nach einer Möglichkeit gesucht habe, ein Explorer-Fenster in PowerShell zu öffnen und auch eine Datei auszuwählen. Ich füge diese Antwort hinzu, falls andere aus demselben Grund darauf stoßen.

Verwenden Sie Folgendes, um den Explorer zu starten und eine Datei auszuwählen Invoke-Expression:

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

Es gibt wahrscheinlich andere Möglichkeiten, dies zu tun, aber das hat bei mir funktioniert.


10
$startinfo = new-object System.Diagnostics.ProcessStartInfo 
$startinfo.FileName = "explorer.exe"
$startinfo.WorkingDirectory = 'D:\foldername'

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

Hoffe das hilft


1
Ich weiß nicht, warum dies abgelehnt wird - ich kann sehen, dass ich es nicht wegen mangelnder Eleganz stimme, aber es ist immer noch eine gute (wenn auch wortreiche) Antwort :) Du bekommst mein UP.
Slipsec

1
Genau. Es ist viel mehr Code, aber es erlaubt etwas Flexibilität.
Mike Shepard

Wenn ich diesen Code verwende, wird der Explorer geöffnet, jedoch nicht das Verzeichnis, das ich als Arbeitsverzeichnis übergeben habe. Es öffnet nur den Bibliotheksordner. Die Antwort, die shovavnik eingereicht hat, macht es richtig in einer einzigen Zeile.
Phoenix14830


2

Ich wollte dies als Kommentar schreiben, habe aber keinen Ruf.

Alle Antworten in diesem Thread beziehen sich im Wesentlichen auf Invoke-Item oder direkt auf explorer.exe. Dies ist jedoch nicht vollständig gleichbedeutend mit "Öffnen mit Ordner". Wenn Sie also ein Explorer-Fenster öffnen möchten, wie in der Frage angegeben, wurde die Frage, wenn wir die Antwort auf eine bestimmte Datei anwenden möchten, immer noch nicht wirklich beantwortet.

z.B,

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

^ Diese beiden Befehle würden dazu führen, dass Notepad.exe oder Firefox.exe für die beiden Dateien aufgerufen werden, nicht für ein explorer.exe-Fenster in C: \ Users \ Foo \ (das enthaltende Verzeichnis).

Wenn man diesen Befehl von Powershell aus ausgeben würde, wäre dies keine große Sache (ohnehin weniger Typisierung). Wenn man Skripte erstellt und den Ordner "enthält" für eine Variable öffnen muss, ist es eine Frage des String-Abgleichs, aus dem das Verzeichnis extrahiert wird der vollständige Pfad zur Datei.

Gibt es keinen einfachen Befehl "Open-Containing-Folder", so dass eine Variable ersetzt werden könnte?

z.B,

$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"). Verzeichnis
Dave_J

Eine Alternative, die im Wesentlichen dieselbe ist, aber alles in Powershell-Cmdlets enthält: ii (geteilter Pfad "C: \ temp \ file.txt")
EBGreen

0

Dies ist das einzige, was meinen einzigartigen Einschränkungen entspricht, dass der Ordner als Quizo-Registerkarte in einem vorhandenen Explorer-Fenster geöffnet werden soll.

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.