35

当您从预安装的快捷方式之一启动 PowerShell 窗口时,我会附上漂亮的蓝色窗口。但是,如果你手动启动 powershell.exe,你不会得到这些颜色,你会得到黑色/白色 :(

这是因为默认设置是在快捷方式 (.lnk) 文件中设置的:

PowerShell 快捷方式颜色设置

我在资源管理器上下文菜单中有一个“PowerShell Prompt Here”条目,我希望它使用与常用快捷方式相同的漂亮颜色来启动 PowerShell;黑色很糟糕,而且拥有不同颜色的窗口会令人困惑(尤其是当我经常打开一些也是黑色的老式命令窗口时!)。

到目前为止,我在尝试设置时发现了两个问题:

  1. 从 PowerShell 中设置颜色似乎只允许某些值(ConsoleColor 枚举),这些值都不匹配默认快捷方式上的值。
  2. 在 PS 配置文件中设置颜色只会导致之后写入的文本采用新的背景颜色。添加“cls”会导致原始颜色在开始时出现令人讨厌的闪光。

有什么方法可以从命令行启动 PowerShell(即,我可以将其作为资源管理器上下文菜单项嵌入注册表)使用与快捷方式相同的设置?

4

9 回答 9

31

编辑您的配置文件脚本(由 $profile 指向)并自己设置所需的颜色:

# 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
于 2012-12-04T13:47:46.463 回答
24

这是一个非常简单的方法:

1. 将 .LNK 添加到您的 PATHEXT 变量中。

开始 -> 运行“sysdm.cpl” -> 高级 -> 环境变量

向下滚动系统变量,双击 PATHEXT

添加.LNK;如下图所示:

路径扩展

2 复制默认的“Windows Powershell.lnk”

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

3. 在运行提示符下键入“powershell”现在将显示默认控制台颜色/配置。

您可以根据自己的喜好进一步自定义 C:\Windows\System32 中的 .lnk。

请注意,这只会起作用,因为您已将 .lnk 添加到可接受的扩展名列表中,并且默认情况下 c:\windows\system32 是搜索路径(PATH 系统变量)中的第一项。

如果控制台是通过 cmd.exe 启动的,这将不会自定义控制台。

4. 要从“在此处运行 Powershell”上下文菜单中执行此操作,请将其保存为 .reg 文件并导入:

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'\""

我正在使用 cmd.exe 调用“start”,它将启动 powershell.lnk 并将当前工作目录作为参数传递。似乎还不能从地址栏工作。我应该在 45 分钟前回家,但你的问题解决起来很有趣!:)

奖励积分:您可以将发送到 Powershell 的命令线程化。因此,如果您要修改 Powershell 控制台的标题属性:

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

只需在命令之间添加一个分号。

快乐炮击

于 2012-12-03T20:12:48.067 回答
13

我发现使用concfg 工具scoop为 Powershell 安装颜色和字体非常有用:

  1. 安装勺子:

    iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
    
  2. 安装配置:

    scoop install concfg
    
  3. 安装Solarized 主题

    concfg import solarized
    

就是这样,感谢作者!

于 2017-01-02T13:52:05.587 回答
6

单击系统菜单(窗口左上角的 PowerShell 图标),然后单击默认值。您可以在此处更改默认颜色,PowerShell Prompt Here 命令将遵守该颜色。

来自:https ://superuser.com/a/523017/109736

于 2013-07-23T16:53:09.053 回答
6

正确的方法是使用注册表

cd hkcu:/console
$0 = '%systemroot%_system32_windowspowershell_v1.0_powershell.exe'
ni $0 -f
sp $0 ColorTable00 0x00562401
sp $0 ColorTable07 0x00f0edee
于 2014-05-18T00:08:39.180 回答
3
  1. 运行regedit命令打开注册表编辑器
  2. 通过导出来跟踪HKEY_CURRENT_USER > CONSOLE和备份整个文件夹以防万一
  3. 删除文件夹

重新启动您的 Powershell,配色方案必须已重置为默认值。

注意:如果您有任何其他与 PowerShell(或命令提示符、Git Bash 等)相关的设置需要保留,请进一步探索控制台文件夹以删除相应的键

于 2017-12-05T14:23:01.223 回答
1

这是我的解决方案(在作为系统启动的脚本中设置颜色)。可能超出您的需要(请参阅我自己的答案):

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

于 2015-04-17T16:06:08.150 回答
0

基于@rex-hardin 出色的回答,我改进了此处的注册表编辑器内容以添加一个图标,并使用 PowerShell 原生参数从正确的路径开始。

右键单击目录背景以及直接右键单击目录图标时,将启用上下文菜单。

当然,我们还运行一个与默认控制台完全相同的蓝色背景控制台。

1.在环境变量中添加“ .LNK”扩展名%PATHEXT%

这允许系统执行带有.lnk扩展名的文件(快捷方式的隐藏扩展名)

2.将默认的PowerShell快捷方式链接复制到system32作为powershell文件

这允许powershell命令从system32文件夹(位于%PATH%)中启动我们的快捷方式

使用资源管理器(复制+重命名)或下面的命令行:

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

3. 将以下代码添加到powershell_here.reg文件中并执行。

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'"

在此处输入图像描述

于 2018-12-13T14:41:02.500 回答
0

在 Windows 7 Pro 64 位上从 Explore 或 Total Commander 或 Double Commander 启动当前文件夹中默认蓝色和白色的 powershell:

  1. 星形菜单 -> 搜索 PowerShell 链接 -> 右键单击​​它 -> 属性 -> 快捷方式选项卡(默认打开的选项卡) -> 修改 Start in: -> %CD%

在此处输入图像描述

  1. 在系统 PATH 上的某个文件夹中的某处创建一个名为ps.bat的批处理文件(如果您没有这样的文件夹,只需创建一个,假设C:\run\cli并将其添加到 PATH 系统环境变量中)。此批处理文件必须包含以下命令:

    开始 "" "C:\ProgramData\Microsoft\Windows\开始菜单\程序\附件\Windows PowerShell\Windows PowerShell.lnk"

就是这样。现在只需在显示当前文件夹的资源管理器的路径栏中或在 Total Commander 或 Double Commander 等的命令行框中键入 ps...

在 Windows 10 上,无需从“开始”菜单修改 PowerShell 快捷方式,上面的 ps.bat 文件可能仅包含以下命令:

start %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
于 2020-06-16T21:48:17.690 回答