Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

On my Windows 7, if i run a powershell via "Win+R", "powershell" it will start with white text on black background and settings are affected via [HKEY_CURRENT_USER\Colors]. For example, i can easily change the default "red" color to be less bright:

enter image description here

But if i pin this powershell to Windows 7 superbar and start it by clicking superbar icon, it will display some mad blue-and-white colors that i can't change O_O:

enter image description here

Why such difference and is it any way to configure colors of pinned powershell same way i can configure powrshell that is started via "run" command.

share|improve this question
    
if you run "$profile" in each window, does it display the same profile? or different? –  Logman Dec 22 '12 at 14:12
    
@Logman It was the first thing i have checked. Exactly same profile. You can check it for yourself - any Windows 7 do as i described :( –  Eye of Hell Dec 22 '12 at 14:21
    
when I do it, the font color is almost or a perfect match. BUT the background color is different: one black and the other dark blue. –  Logman Dec 22 '12 at 15:05
add comment

2 Answers 2

up vote 6 down vote accepted

TL;DR

  1. Run powershell.exe
  2. ALT-SPACE -> Properties
  3. Change your settings as desired.
  4. OK

powershell.exe is a console program. When a console program runs, Windows configures the console by looking in a bunch of locations.

First it looks at the shortcut (.LNK file) you launched. That's what you'll typically see in the start menu, on the desktop, in the taskbar. If you RClick on the shortcut and select Properties, you'll see a bunch of these options there.

For any options that aren't specified in the shortcut (or if you launched the .EXE directly, without a shortcut), Windows will look in the registry.

I couldn't find a comprehensive list of registry keys involved, but here are the ones I know about:

HKEY_CURRENT_USER\Console
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor

But wait, there's more!

When you open the System menu on a console window you see both "Properties" and "Defaults".

Defaults modifies one of the above registry keys.

The properties apply to the currently open console window and the shortcut that launched it. If you didn't use a shortcut because you opened the .EXE directly, it goes to a special registry key, instead, like:

HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe

But that's not all!

Console programs have the ability to modify their own colors. For example, in CMD you can do:

C:\>color f0

And in PowerShell:

PS> $Host.UI.RawUI.BackgroundColor = 7

These settings are not persisted in any way.

share|improve this answer
1  
This is arcane stuff. I am sure I have missed some details. Hope others can help me out! –  Jay Bazuzi Dec 22 '12 at 15:01
1  
+1 Jay, I think Jay got it right, depends on how/where ps is run and the window opens up with the properties of that shortcut or exe –  Logman Dec 22 '12 at 15:11
    
I have checked provided registry paths - they don't have any information about white/blue colors used by pinned powershell. Adding custom colors into them don't affect pinned powershell :(. So question is still active - where pinned powershell settings are stored and how they can be altered :). –  Eye of Hell Dec 22 '12 at 21:04
    
@EyeofHell: Did you look at the shortcut? I checked mine and confirmed that the white/blue color scheme is set there, not in the registry. I am editing my answer to make that more clear. –  Jay Bazuzi Dec 22 '12 at 23:45
    
This is a great answer. For what it is worth, I personally set foreground and background colors in the powershell profile (Get-Help about_Profiles). That way I can have different colors for my regular account vs. my domain admin account so I hopefully don't try stupid things as a domain admin. –  EBGreen Dec 26 '12 at 15:01
add comment

The correct key for this is

HKCU:\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe

Example

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.