Question

Exemple:Tu as un raccourci s à SomeProgram dans le répertoire courant.

Dans cmd.exe, vous pouvez taper s et il lancera le programme.

Dans PowerShell, en tapant s donne :

The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.

Si vous tapez s.lnk ou SomeProgram, il exécute très bien le programme.

Comment puis-je configurer PowerShell pour exécuter des raccourcis comme les programmes ?

Était-ce utile?

La solution

Sur mon système Vista, la saisie de S ne lancera pas de fichier lnk à moins que la variable d'environnement PATHEXT soit définie avec .lnk dans la liste.Quand je fais.S fonctionnera dans cmd.exe et je dois faire .\S dans PowerShell.

Autres conseils

Vous pouvez également appeler un raccourci à l’aide de l’applet de commande « invoke-item ».Ainsi par exemple si vous souhaitez lancer « internet explorer.lnk » vous pouvez taper la commande suivante :

invoke-item 'Internet Explorer.lnk'

Ou vous pouvez également utiliser l'alias

ii 'internet explorer.lnk'

Une autre chose intéressante est que vous pouvez faire "invoke-item t.txt" et il s'ouvrirait automatiquement quel que soit le gestionnaire par défaut pour les fichiers *.txt, comme le bloc-notes.

Note Si vous souhaitez exécuter une application, app.exe, dans le répertoire courant, vous devez réellement spécifier le chemin, relatif ou absolu, à exécuter.".\app.exe" est ce que vous devrez taper pour exécuter l'application.

Après avoir ajouté ;.LNK jusqu'à la fin de mon PATHEXT variable d'environnement, je peux désormais exécuter des raccourcis même sans le précédent ./ notation.(Merci Bruceatk !)

J'ai également été inspiré par la suggestion de Steven de créer un petit script qui donne automatiquement un alias à tous les raccourcis de mon PATH (même si je prévois de m'en tenir à la solution la plus simple ;).

$env:path.Split( ';' ) | 
  Get-ChildItem -filter *.lnk | 
  select @{ Name='Path'; Expression={ $_.FullName } }, 
         @{ Name='Name'; Expression={ [IO.Path]::GetFileNameWithoutExtension( $_.Name ) } } | 
  where { -not (Get-Alias $_.Name -ea 0) } | 
  foreach { Set-Alias $_.Name $_.Path }

Je ne crois pas que vous puissiez le faire.Il serait peut-être préférable d'aliaser les commandes couramment utilisées dans un script que vous appelez à partir de votre script de profil.

Exemple -

Set-Alias ​​np c:\windows otepad.exe

Ensuite, vous disposez de votre nom court et facilement saisissable à partir de la ligne de commande.

D'une part, le raccourci n'est pas "s", mais "s.lnk".Par exemple.vous ne pouvez pas ouvrir un fichier texte (disons avec le bloc-notes) en tapant "t" lorsque le nom est "t.txt" :) Technet dit

La variable d'environnement PathExt définit la liste des extensions de fichiers vérifiées par Windows NT lors de la recherche d'un fichier exécutable.La valeur par défaut de PATHEXT est .COM;.EXE;.BAT;.CMD

Vous pouvez pointer la source comme décrit par d'autres ici, ou vous pouvez également utiliser le caractère d'invocation "&".Cela signifie que PS traite votre chaîne comme quelque chose à exécuter plutôt que comme un simple texte.Cela pourrait cependant être plus important dans un script.

J'ajouterais que vous devez transmettre tous les paramètres EN DEHORS des guillemets (celui-ci m'a déjà mordu), notez que le "-r" n'est pas dans la chaîne citée, seulement l'exe.

& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null

Vous pouvez toujours utiliser la complétion par tabulation pour taper "s[TAB]" et appuyer sur ENTRÉE pour l'exécuter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top