Подтвердить что ты не робот

Как запустить файл powershell.exe с цветами по умолчанию из ярлыка PowerShell?

Я подключен к голубому цвету окна PowerShell, когда вы запускаете его из одного из предустановленных ярлыков. Однако, если вы вручную запустите powershell.exe, вы не получите эти цвета, вы получите черный/белый: (

Это связано с тем, что в файле ярлыка (.lnk) установлены значения по умолчанию:

PowerShell shortcut colour settings

У меня есть запись "PowerShell Prompt Here" в контекстном меню проводника, и я бы хотел, чтобы она запускала PowerShell, используя те же приятные цвета, что и обычный ярлык; черный отстой, и это путано, чтобы иметь разные цветные окна (особенно, когда у меня часто появляются окна команд старой школы, которые также черные!).

Я обнаружил две проблемы с попыткой установить это до сих пор:

  • Настройка цвета внутри PowerShell, по-видимому, допускает только определенные значения (ConumColor enum), ни один из которых не соответствует значению в ярлыке по умолчанию.
  • Настройка цвета в профиле PS вызывает только текст, написанный впоследствии, чтобы почтить новый цвет фона. Добавление "cls" вызывает неприятную вспышку исходного цвета при запуске.

Есть ли способ запустить PowerShell из командной строки (то есть, что я могу встроить в реестр в качестве элемента контекстного меню проводника), который будет использовать те же настройки, что и ярлык?

4b9b3361

Ответ 1

Здесь очень простой способ:

1. Добавьте .LNK в переменную PATHEXT.

Пуск → запустить "sysdm.cpl" → advanced → Переменные среды

Прокрутите вниз системные переменные, дважды щелкните PATHEXT

Добавить .LNK; как показано ниже:

Path Extension

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" из приглашения запуска теперь приведет к отображению цвета/конфигурации консоли по умолчанию.

Вы также можете настроить .lnk в C:\Windows\System32 по своему вкусу.

Обратите внимание, что это будет работать только потому, что вы добавили .lnk в список допустимых расширений. И c:\windows\system32 по умолчанию является первым элементом в пути поиска (системная переменная PATH).

Это не будет настраивать консоль, если она запущена через cmd.exe.

4. Чтобы сделать эту работу из контекстного меню "Run Powershell Here", сохраните это как .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'"

Просто добавьте точку с запятой между командами.

Счастливый обстрел

Ответ 2

Измените свой профиль script (указав на $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

Ответ 3

Мне было очень полезно использовать инструмент concfg и scoop, чтобы установить цвета и шрифты для Powershell:

  • Установить совок:

    iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
    
  • Установите concfg:

    scoop install concfg
    
  • Установите Solarized theme:

    concfg import solarized
    

Что он, благодаря авторам!

Ответ 4

Нажмите системное меню (значок PowerShell в левом верхнем углу окна) и нажмите "По умолчанию". Вы можете изменить цвета по умолчанию здесь, и это будет соблюдаться командой PowerShell Prompt Here.

От: https://superuser.com/a/523017/109736

Ответ 5

Правильный способ сделать это с помощью реестра

cd hkcu:/console
$0 = '%systemroot%_system32_windowspowershell_v1.0_powershell.exe'
ni $0 -f
sp $0 ColorTable00 0x00562401
sp $0 ColorTable07 0x00f0edee

Ответ 6

  • Запустите команду regedit, чтобы открыть редактор реестра
  • Отслеживание HKEY_CURRENT_USER > CONSOLE и резервное копирование всей папки путем экспорта на всякий случай
  • Удалить папку

Перезагрузите свою Powershell, цветовая схема должна иметь reset по умолчанию.

Примечание. Если у вас есть другие настройки, относящиеся к PowerShell (или командной строке, Git Bash и т.д.), которые вы можете захотеть сохранить, пожалуйста, изучите папку консоли для удаления соответствующих клавиш

Ответ 8

Основываясь на превосходном ответе @rex-hardin, я улучшил содержание regedit, добавив иконку, и использовал собственные аргументы PowerShell, чтобы начать правильный путь.

Контекстное меню активируется при щелчке правой кнопкой мыши на фоне каталога и при щелчке правой кнопкой мыши по значку каталога.

Конечно, мы также запускаем консоль с синим фоном точно так же, как и по умолчанию.

1. Добавьте расширение " .LNK " в переменную окружения %PATHEXT%

Это позволяет системе выполнять файлы с расширением .lnk (скрытое расширение для ярлыков)

2. Скопируйте стандартную ссылку ярлыка PowerShell на system32 как файл powershell

Это позволяет команде powershell запускать наш ярлык из папки system32 (которая находится в %PATH%)

Используйте проводник (copy + rename) или командную строку ниже:

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

enter image description here