web-dev-qa-db-fra.com

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

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

Des indices?

205
Lachmania

Utilisation:

ii .

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

474
EBGreen

Vous avez quelques options:

  • Powershell recherche les exécutables dans votre chemin, tout comme cmd.exe. Donc, vous pouvez simplement taper Explorer sur l'invite de PowerShell. En utilisant cette méthode, vous pouvez également passer des arguments de ligne de commande (voir http://support.Microsoft.com/kb/31485 )
  • Invoke-Itemcmdlet permet d'exécuter un fichier exécutable ou d'ouvrir un fichier (ou un ensemble de fichiers) à partir de Windows PowerShell. alias : ii
  • utiliser 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")
134
codeape

Utilisez simplement l'applet de commande invoke-item. Par exemple, si vous voulez ouvrir une fenêtre de l'Explorateur sur le répertoire actuel, vous pouvez faire:

invoke-item .
20
tomasr
Explorer .
14
Daniel Kreiseder

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

Pour lancer Explorer et sélectionner un fichier, utilisez Invoke-Expression:

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

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

13
shovavnik

Utilisez n'importe lequel de ceux-ci:

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

Vous pouvez appliquer l'une de ces commandes dans PowerShell.

Juste au cas où vous voudriez ouvrir l'Explorateur à partir de l'invite de commande, les deux dernières commandes ne fonctionneraient pas et les trois premières fonctionneraient bien.

13
20B2
$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

10
Alex

Démarrer Explorer.exe 

Commande simple en une seule ligne

4
powershelluser

Utilisez cette ligne:

invoke-item c:\path
4
user7160191

Je voulais écrire ceci comme commentaire mais je n’ai pas 50 ans de réputation. 

Toutes les réponses dans ce fil doivent essentiellement utiliser Invoke-Item ou utiliser Explorer.exe directement; cependant, ce n'est pas complètement synonyme de "ouvrir un dossier contenant", donc pour ouvrir une fenêtre de l'Explorateur comme l'indique la question, si nous voulions appliquer la réponse à un fichier particulier, la question n'a toujours pas été résolue.

par exemple., 

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

^ Ces deux commandes entraîneraient l’appel de Notepad.exe ou de Firefox.exe sur les deux fichiers, et non sur une fenêtre Explorer.exe sur C:\Users\Foo\(le répertoire contenant).

Considérant que si on commandait powershell avec cette commande, ce ne serait pas grave (moins de frappe de toute façon), si on est en train de scripter et qu'il faut "ouvrir le dossier contenant" sur une variable, il devient alors une question de correspondance de chaîne pour extraire le répertoire le chemin complet du fichier. 

N'y a-t-il pas une simple commande "Open-Containing-Folder" permettant de remplacer une variable? 

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
T Sandwich

C'est la seule chose qui réponde à mes contraintes uniques

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