web-dev-qa-db-fra.com

Comment lancer powershell.exe avec les couleurs "par défaut" du raccourci PowerShell?

Je suis attaché à la belle couleur bleue de la fenêtre PowerShell lorsque vous la lancez à l’aide d’un des raccourcis préinstallés. Cependant, si vous lancez manuellement powershell.exe, vous n'obtenez pas ces couleurs, vous obtenez du noir/blanc :(

En effet, les paramètres par défaut sont définis dans le fichier de raccourci (.lnk):

PowerShell shortcut colour settings

J'ai une entrée "Invite PowerShell ici" dans le menu contextuel de l'Explorateur et j'aimerais qu'elle lance PowerShell avec les mêmes couleurs agréables que le raccourci habituel; le noir est nul, et il est déroutant d’avoir des fenêtres de couleurs différentes (surtout lorsque j’ai des fenêtres de commande à l’ancienne école qui sont aussi souvent noires!).

J'ai trouvé deux problèmes pour essayer de régler cela jusqu'à présent:

  1. Définir la couleur depuis PowerShell semble ne permettre que certaines valeurs (ConsoleColor enum), dont aucune ne correspond à celle du raccourci par défaut.
  2. Lorsque vous définissez la couleur dans le profil PS, seul le texte écrit ultérieurement respecte la nouvelle couleur d'arrière-plan. L'ajout de "cls" provoque un mauvais flash de la couleur d'origine au début.

Existe-t-il un moyen de lancer PowerShell à partir d'une ligne de commande (que je peux incorporer dans le registre en tant qu'élément de menu contextuel de l'Explorateur) qui utilisera les mêmes paramètres que le raccourci?

28
Danny Tuppeny

Voici un moyen très simple:

1. Ajoutez .LNK à votre variable PATHEXT.

Démarrer -> Exécuter "sysdm.cpl" -> Avancé -> Variables d'environnement

Faites défiler les variables système, double-cliquez sur PATHEXT

Ajouter .LNK; comme illustré ci-dessous:

Path Extension

2 Copiez le "Windows Powershell.lnk" par défaut

Copy-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Windows PowerShell\Windows PowerShell.lnk" "C:\Windows\System32\powershell.lnk"

3. Taper "powershell" à partir d'une invite d'exécution va maintenant afficher la couleur/configuration par défaut de la console.

Vous pouvez personnaliser davantage le fichier .lnk dans C:\Windows\System32 à votre guise.

Veuillez noter que cela ne fonctionnera que parce que vous avez ajouté le .lnk à la liste des extensions acceptables ET que c:\windows\system32 est le premier élément du chemin de recherche (variable système PATH) par défaut. 

Cela ne personnalisera pas la console si elle est lancée via cmd.exe.

4. Pour que cela fonctionne dans le menu contextuel "Run Powershell Here", enregistrez-le en tant que fichier .reg et importez-le:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Shell\PowerShellHere\command]
@="C:\\WINDOWS\\system32\\cmd.exe /c start powershell -NoExit \"cd '%1';(get-Host).ui.rawui.windowtitle = 'Oompa Loompa'\""

[HKEY_CLASSES_ROOT\Directory\Shell\PowerShellHere\command]
@="C:\\WINDOWS\\system32\\cmd.exe /c start powershell -NoExit \"cd '%1';(get-Host).ui.rawui.windowtitle = 'Oompa Loompa'\""

J'utilise cmd.exe pour appeler "start", ce qui lancera le fichier powershell.lnk et transmettra le répertoire de travail actuel en argument. Ne semble pas fonctionner depuis la barre d'adresse. J'aurais dû rentrer chez moi il y a 45 minutes, mais votre problème était amusant à résoudre! :) 

Points bonus: Vous pouvez enfiler les commandes envoyées à Powershell. Donc, si vous souhaitez modifier l'attribut title de la console Powershell:

\"cd '%1';(get-Host).ui.rawui.windowtitle = 'Oompa Loompa'"

Ajoutez simplement un point-virgule entre les commandes. 

Bon bombardement

20
Rex Hardin

Modifiez votre script de profil (indiqué par $ profile) et définissez vous-même les couleurs souhaitées:

# set regular console colors
[console]::backgroundcolor = "darkmagenta"
[console]::foregroundcolor = "darkyellow"

# set special colors

$p = $Host.privatedata

$p.ErrorForegroundColor    = "Red"
$p.ErrorBackgroundColor    = "Black"
$p.WarningForegroundColor  = "Yellow"
$p.WarningBackgroundColor  = "Black"
$p.DebugForegroundColor    = "Yellow"
$p.DebugBackgroundColor    = "Black"
$p.VerboseForegroundColor  = "Yellow"
$p.VerboseBackgroundColor  = "Black"
$p.ProgressForegroundColor = "Yellow"
$p.ProgressBackgroundColor = "DarkCyan"

# clear screen
clear-Host
30
x0n

J'ai trouvé très utile d'utiliser concfg tool et scoop pour installer des couleurs et des polices pour Powershell:

  1. Installez scoop: 

    iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
    
  2. Installez concfg:

    scoop install concfg
    
  3. Installer Thème Solarisé :

    concfg import solarized
    

Ça y est, merci aux auteurs!

10
Artyom

Cliquez sur le menu Système (icône PowerShell en haut à gauche de la fenêtre), puis sur Valeurs par défaut. Vous pouvez modifier les couleurs par défaut ici et elles seront respectées par la commande Invite ici de PowerShell.

De: https://superuser.com/a/523017/109736

6
Marc Stober

La bonne façon de faire est avec le registre

cd hkcu:/console
$0 = '%systemroot%_system32_windowspowershell_v1.0_powershell.exe'
ni $0 -f
sp $0 ColorTable00 0x00562401
sp $0 ColorTable07 0x00f0edee
5
Steven Penny
  1. Exécutez la commande regedit pour ouvrir l'éditeur de registre
  2. Traquez HKEY_CURRENT_USER > CONSOLE et sauvegardez le dossier en entier en exportant au cas où
  3. Supprimer le dossier

Redémarrez votre Powershell, la palette de couleurs doit avoir été réinitialisée aux valeurs par défaut.

Remarque: Si vous souhaitez conserver certains paramètres liés à PowerShell (ou à une invite de commande, Git Bash, etc.), veuillez explorer davantage le dossier Console pour supprimer les clés appropriées

2
rak

C'était ma solution (définir les couleurs dans un script lancé en tant que système). Peut-être plus que ce dont vous avez besoin (voir ma propre réponse):

https://superuser.com/questions/891519/using-psexec-to-launch-powershell-session-as-system-with-specific-window-attribu

1
montag

Sur la base de @ rex-hardin excellent answer , j’ai amélioré le contenu de regedit ici pour ajouter une icône et utiliser les arguments natifs de PowerShell pour démarrer dans le bon chemin.

Le menu contextuel est activé lorsque vous cliquez avec le bouton droit de la souris sur l’arrière-plan d’un répertoire et lorsque vous cliquez directement sur une icône de répertoire.

Bien sûr, nous exécutons également une console avec un fond bleu, exactement comme celle par défaut.

1. Ajoutez l'extension ".LNK" à la variable d'environnement %PATHEXT%

Cela permet au système d'exécuter des fichiers avec l'extension .lnk (extension masquée pour les raccourcis)

2. Copiez le lien de raccourci PowerShell par défaut vers system32 en tant que fichier powershell.

Cela permet à la commande powershell de lancer notre raccourci à partir du dossier system32 (qui se trouve dans %PATH%).

Utilisez Explorer (copier + renommer) ou la ligne de commande ci-dessous:

Copy-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Windows PowerShell\Windows PowerShell.lnk" "C:\Windows\System32\powershell.lnk"

3. Ajoutez le code ci-dessous à un fichier powershell_here.reg et exécutez-le.

powershell_here.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\directory\background\Shell\PowerShell]
@="PowerShell Here"
"Icon"="%SystemRoot%\\system32\\WindowsPowerShell\\v1.0\\powershell.exe"

[HKEY_CLASSES_ROOT\directory\background\Shell\PowerShell\command]
@="cmd.exe /c start powershell -NoExit -NoProfile -Command Set-Location -LiteralPath '%V'"

[HKEY_CLASSES_ROOT\directory\Shell\PowerShell]
@="PowerShell here"
"Icon"="%SystemRoot%\\system32\\WindowsPowerShell\\v1.0\\powershell.exe"

[HKEY_CLASSES_ROOT\directory\Shell\PowerShell\command]
@="cmd.exe /c start powershell -NoExit -NoProfile -Command Set-Location -LiteralPath '%L'"

 enter image description here

0
Donatello