Ich bin an die Nice-Blau-Farbe des PowerShell-Fensters gebunden, wenn Sie es über eine der vorinstallierten Verknüpfungen starten. Wenn Sie powershell.exe jedoch manuell starten, erhalten Sie diese Farben nicht. Sie erhalten Schwarz/Weiß :(
Dies ist darauf zurückzuführen, dass die Standardeinstellungen für die Verknüpfungsdatei (.lnk) festgelegt sind:
Ich habe im Explorer-Kontextmenü den Eintrag "PowerShell-Eingabeaufforderung", und ich möchte, dass PowerShell mit denselben Nice-Farben wie bei der üblichen Verknüpfung gestartet wird. Schwarz ist scheiße, und es ist verwirrend, andersfarbige Fenster zu haben (vor allem, wenn ich alte Fenster mit alten Befehlen häufig geöffnet habe, die auch schwarz sind!).
Ich habe bisher zwei Probleme beim Versuch gefunden, dies festzulegen:
Gibt es eine Möglichkeit, PowerShell über eine Befehlszeile zu starten (dh, die ich als Explorer-Kontextmenüelement in die Registrierung einbetten kann), die dieselben Einstellungen wie die Verknüpfung verwendet?
Hier ist ein wirklich einfacher Weg:
Start -> "sysdm.cpl" ausführen -> Erweitert -> Umgebungsvariablen
Scrollen Sie nach unten durch die Systemvariablen und doppelklicken Sie auf PATHEXT
Add .LNK; wie unten dargestellt:
Copy-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Windows PowerShell\Windows PowerShell.lnk" "C:\Windows\System32\powershell.lnk"
Sie können die .lnk-Datei in C:\Windows\System32 nach Ihren Wünschen anpassen.
Bitte beachten Sie, dass dies nur funktioniert, weil Sie der Liste der akzeptablen Erweiterungen die Datei .lnk hinzugefügt haben. C:\windows\system32 ist standardmäßig das erste Element im Suchpfad (Systemvariable PATH).
/ - Die Konsole wird nicht angepasst, wenn sie über cmd.exe gestartet wird.
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'\""
Ich benutze cmd.exe, um "start" aufzurufen, wodurch die powershell.lnk gestartet und das aktuelle Arbeitsverzeichnis als Argument übergeben wird. Scheint von der Adressleiste noch nicht zu funktionieren. Ich hätte vor 45 Minuten nach Hause gehen sollen, aber Ihr Problem hat Spaß gemacht, es zu lösen! :)
Bonuspunkte: Sie können die an Powershell gesendeten Befehle einfädeln. Wenn Sie also das Titelattribut der Powershell-Konsole ändern möchten:
\"cd '%1';(get-Host).ui.rawui.windowtitle = 'Oompa Loompa'"
Fügen Sie einfach ein Semikolon zwischen den Befehlen hinzu.
Glücklicher Beschuss
Bearbeiten Sie Ihr Profilskript (durch $ Profil gekennzeichnet) und legen Sie die gewünschten Farben selbst fest:
# 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
Ich fand es sehr nützlich, mit concfg tool und scoop Farben und Schriftarten für Powershell zu installieren:
Installieren Sie Scoop:
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
Installiere concfg:
scoop install concfg
Installiere Solarized Theme :
concfg import solarized
Dank den Autoren!
Klicken Sie auf das Systemmenü (PowerShell-Symbol oben links im Fenster) und klicken Sie auf Defaults. Sie können hier die Standardfarben ändern. Sie werden vom Befehl PowerShell Prompt Here berücksichtigt.
Der richtige Weg dazu ist bei der Registry
cd hkcu:/console
$0 = '%systemroot%_system32_windowspowershell_v1.0_powershell.exe'
ni $0 -f
sp $0 ColorTable00 0x00562401
sp $0 ColorTable07 0x00f0edee
regedit
aus, um den Registrierungseditor zu öffnenHKEY_CURRENT_USER > CONSOLE
und sichern Sie den gesamten Ordner, indem Sie nur für den Fall exportierenStarten Sie Ihre Powershell neu. Das Farbschema muss auf die Standardwerte zurückgesetzt worden sein.
Hinweis: Wenn Sie weitere Einstellungen in Bezug auf PowerShell (oder Eingabeaufforderung, Git Bash usw.) haben, die Sie möglicherweise beibehalten möchten, lesen Sie bitte den Konsolenordner, um die entsprechenden Schlüssel zu löschen
Dies war meine Lösung (Einstellung der Farben in einem Skript, das als System gestartet wird). Kann mehr sein als du brauchst (siehe meine eigene Antwort):
Basierend auf @ rex-hardin excellent answer habe ich den regedit-Inhalt verbessert, um ein Symbol hinzuzufügen, und die systemeigenen PowerShell-Argumente verwenden, um im richtigen Pfad zu beginnen.
Das Kontextmenü wird aktiviert, wenn Sie mit der rechten Maustaste auf einen Verzeichnishintergrund klicken und mit der rechten Maustaste direkt auf ein Verzeichnissymbol klicken.
Natürlich betreiben wir auch eine Konsole mit blauem Hintergrund, genau wie die Standardkonsole.
.LNK
die Erweiterung "%PATHEXT%
" hinzuDadurch kann das System Dateien mit der Erweiterung .lnk
(versteckte Erweiterung für Verknüpfungen) ausführen.
powershell
-Datei in system32Dadurch kann der Befehl powershell
unsere Verknüpfung aus dem Ordner system32
starten (der sich in %PATH%
befindet).
Verwenden Sie den Explorer (Kopieren + Umbenennen) oder die folgende Befehlszeile:
Copy-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Windows PowerShell\Windows PowerShell.lnk" "C:\Windows\System32\powershell.lnk"
powershell_here.reg
-Datei den folgenden Code hinzu und führen Sie ihn aus.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'"