Est-il possible d'ouvrir une fenêtre de l'Explorateur Windows à partir de PowerShell?


304

Je suis sûr que cela doit être possible, mais je ne sais pas comment le faire.

Des indices?

Réponses:


666

Utilisation:

ii .

ce qui est court pour

Invoke-Item .

C'est l'une des choses les plus courantes que je tape sur la ligne de commande PowerShell.


3
C'est drôle que personne n'ait répondu à cette réponse la plus simple à part vous. :)
halr9000

15
Je suis une personne très simple.
EBGreen

85
Cette commande est l'abréviation de Invoke-Item. Le point après peut être n'importe quel chemin.
M. Dudley

Réponse impressionnante et très simple! Je l'aime.
Anthony Liriano

Le premier paramètre par défaut iiest donc explorer, le deuxième paramètre est le chemin.
Timo

145

Vous avez quelques options:

  • Powershell recherche les exécutables dans votre chemin, tout comme le fait cmd.exe. Vous pouvez donc simplement taper explorer sur l'invite PowerShell. En utilisant cette méthode, vous pouvez également passer des arguments de ligne de commande (voir http://support.microsoft.com/kb/314853 )
  • L' applet de commande Invoke-Item fournit un moyen d'exécuter un fichier exécutable ou d'ouvrir un fichier (ou un ensemble de fichiers) à partir de Windows PowerShell. Alias : ii
  • utilisez system.diagnostics.process

Exemples:

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
Vous pouvez également faire: invoke-item c: \ path \
x0n

C'est la réponse la mieux formulée et la plus informative ici, et devrait également inclure les autres réponses votées ici, en particulier "ii".
DaveD

iiest un alias deInvoke-Item
Kolob Canyon

32

Utilisez l'un de ces éléments:

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

Vous pouvez appliquer n'importe laquelle de ces commandes dans PowerShell.

Au cas où vous voudriez ouvrir l'explorateur à partir de l'invite de commande, les deux dernières commandes ne fonctionnent pas et les trois premières fonctionnent correctement.


23

Utilisez simplement l' Invoke-Itemapplet de commande. Par exemple, si vous souhaitez ouvrir une fenêtre d'exploration sur le répertoire courant, vous pouvez faire:

Invoke-Item .

Un alias pour cela est ii.
VivekDev


18

Je suis tombé sur cette question à la recherche d'un moyen d'ouvrir une fenêtre Explorer à partir de PowerShell et également de sélectionner un fichier. J'ajoute cette réponse au cas où d'autres la rencontreraient pour la même raison.

Pour lancer l'Explorateur et sélectionner un fichier, utilisez Invoke-Expression:

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

Il y a probablement d'autres façons de le faire, mais cela a fonctionné pour moi.


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

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

J'espère que cela t'aides


1
Je ne sais pas pourquoi cela est rejeté - je peux voir que je ne vote pas pour le manque d'élégance, mais c'est toujours une bonne réponse (bien que verbeuse) :) Vous obtenez mon UP.
slipsec

1
Je suis d'accord. C'est beaucoup plus de code, mais cela permet une certaine flexibilité.
Mike Shepard

Lorsque j'utilise ce code, il ouvre l'Explorateur, mais pas le répertoire que j'ai transmis en tant que WorkingDirectory. Il ouvre simplement le dossier Bibliothèques. La réponse soumise par shovavnik le fait correctement sur une seule ligne.
Phoenix14830


2

Je voulais écrire ceci comme un commentaire mais je n'ai pas 50 points de réputation.

Toutes les réponses dans ce fil sont essentiellement d'utiliser Invoke-Item ou d'utiliser explorer.exe directement; cependant, ce n'est pas complètement synonyme de "dossier contenant ouvert", donc en termes d'ouverture d'une fenêtre Explorer comme l'indique la question, si nous voulions appliquer la réponse à un fichier particulier, la question n'a toujours pas vraiment été répondue.

par exemple,

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

^ ces deux commandes entraîneraient l'appel Notepad.exe ou Firefox.exe sur les deux fichiers respectivement, pas une fenêtre explorer.exe sur C: \ Users \ Foo \ (le répertoire contenant).

Alors que si l'on émettait cette commande à partir de powershell, ce ne serait pas grave (moins en tapant quand même), si l'on écrit un script et doit "ouvrir le dossier contenant" sur une variable, cela devient une question de correspondance de chaîne pour extraire le répertoire de le chemin d'accès complet au fichier.

N'y a-t-il pas de simple commande "Open-Containing-Folder" telle qu'une variable puisse être substituée?

par exemple,

$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"). Répertoire
Dave_J

Une alternative qui est essentiellement la même mais qui conserve tout dans les applets de commande Powershell: ii (Split-Path "C: \ temp \ file.txt")
EBGreen

0

C'est la seule chose qui correspond à mes contraintes uniques de vouloir que le dossier s'ouvre en tant qu'onglet Quizo dans n'importe quelle fenêtre de l'Explorateur existante.

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.