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?

Lachmania
quelle

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.

EBGreen
quelle
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")
Codeape
quelle
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.

20B2
quelle
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 .
tomasr
quelle
Ein Alias ​​dafür ist ii.
VivekDev
20
explorer .
Daniel Kreiseder
quelle
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.

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

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

Hoffe das hilft

Alex
quelle
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
4
start explorer.exe 

Einfacher einzeiliger Befehl

Powershelluser
quelle
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
T Sandwich
quelle
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")
Beej
quelle