it-swarm.com.de

Kann ich ein Windows Explorer-Fenster von PowerShell aus öffnen?

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

Irgendwelche Hinweise?

205
Lachmania

Benutzen:

ii .

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

474
EBGreen

Sie haben einige Möglichkeiten:

  • Powershell sucht in Ihrem Pfad nach ausführbaren Dateien, genau wie cmd.exe. Sie können also einfach Explorer in die Powershell-Eingabeaufforderung eingeben. Mit dieser Methode können Sie auch Cmd-Line-Argumente übergeben (siehe http://support.Microsoft.com/kb/314853 ).
  • Das Invoke-Itemcmdlet bietet eine Möglichkeit, eine ausführbare Datei auszuführen oder eine Datei (oder einen Dateisatz) 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")
123
codeape

Verwenden Sie einfach das Cmdlet "invoke-item". Wenn Sie beispielsweise ein Explorer-Fenster im aktuellen Verzeichnis öffnen möchten, können Sie Folgendes tun:

invoke-item .
20
tomasr
Explorer .
14

Ich bin auf diese Frage gestoßen und habe nach einem Weg gesucht, ein Explorer-Fenster von PowerShell zu öffnen und also eine Datei auszuwählen. Ich füge diese Antwort hinzu, falls andere aus demselben Grund auf sie stoßen.

Um den Explorer zu starten und eine Datei auszuwählen, verwenden Sie Invoke-Expression:

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

Es gibt wahrscheinlich andere Möglichkeiten, dies zu tun, aber das hat für mich funktioniert.

13
shovavnik

Verwenden Sie eine davon:

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

Sie können einen 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.

13
20B2
$startinfo = new-object System.Diagnostics.ProcessStartInfo 
$startinfo.FileName = "Explorer.exe"
$startinfo.WorkingDirectory = 'D:\foldername'

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

Hoffe das hilft

10
Alex

Starten Sie Explorer.exe 

Einfacher einzeiliger Befehl

4
powershelluser

Verwenden Sie diese Zeile:

invoke-item c:\path
4
user7160191

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

Alle Antworten in diesem Thread bestehen im Wesentlichen darin, Invoke-Item oder Explorer.exe direkt zu verwenden. Dies ist jedoch nicht vollständig gleichbedeutend mit "open enthaltender Ordner". Wenn Sie also die Frage beantworten, dass ein Explorer-Fenster geöffnet werden soll, wurde die Frage immer noch nicht wirklich beantwortet, wenn Sie die Antwort auf eine bestimmte Datei anwenden möchten.

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 wird, nicht ein Explorer.exe-Fenster unter C:\Users\Foo\(das enthaltende Verzeichnis).

Wenn Sie diesen Befehl von Powershell ausgeben würden, wäre dies keine große Sache (ohnehin weniger Tipparbeit). Wenn Sie Skripts erstellen und "enthaltende Ordner" für eine Variable öffnen müssen, ist es eine Frage des String-Abgleichs, um das Verzeichnis zu extrahieren der vollständige Pfad zur Datei. 

Gibt es keinen einfachen Befehl "Open-Containing-Folder", durch den 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
T Sandwich

Dies ist das einzige, das zu meinen einzigartigen Einschränkungen passt

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
0
Beej