webentwicklung-frage-antwort-db.com.de

Wie kann ich powershell.exe mit den "Standardfarben" der PowerShell-Verknüpfung starten?

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:

PowerShell shortcut colour settings

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:

  1. Das Festlegen der Farbe in PowerShell scheint nur bestimmte Werte zuzulassen (ConsoleColor-Aufzählung), von denen keine mit der der Standardverknüpfung übereinstimmt.
  2. Wenn Sie die Farbe im PS-Profil einstellen, wird nur der nachgeschriebene Text der neuen Hintergrundfarbe angepasst. Durch das Hinzufügen von "cls" wird beim Start ein böses Aufleuchten der Originalfarbe verursacht.

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?

28
Danny Tuppeny

Hier ist ein wirklich einfacher Weg:

1. Fügen Sie Ihrer PATHEXT-Variablen .LNK hinzu.

Start -> "sysdm.cpl" ausführen -> Erweitert -> Umgebungsvariablen

Scrollen Sie nach unten durch die Systemvariablen und doppelklicken Sie auf PATHEXT

Add .LNK; wie unten dargestellt:

Path Extension

2 Kopieren Sie die Standardeinstellung "Windows Powershell.lnk".

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

3. Wenn Sie in einer Eingabeaufforderung "Powershell" eingeben, wird jetzt die Standardfarbekonfiguration der Konsole angezeigt.

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.

4. Um dies über das Kontextmenü "PowerShell Here ausführen" auszuführen, speichern Sie es als .reg-Datei und importieren Sie es:

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

20
Rex Hardin

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
30
x0n

Ich fand es sehr nützlich, mit concfg tool und scoop Farben und Schriftarten für Powershell zu installieren:

  1. Installieren Sie Scoop: 

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

    scoop install concfg
    
  3. Installiere Solarized Theme :

    concfg import solarized
    

Dank den Autoren!

10
Artyom

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.

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

6
Marc Stober

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
5
Steven Penny
  1. Führen Sie den Befehl regedit aus, um den Registrierungseditor zu öffnen
  2. Suchen Sie nach HKEY_CURRENT_USER > CONSOLE und sichern Sie den gesamten Ordner, indem Sie nur für den Fall exportieren
  3. Löschen Sie den Ordner

Starten 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

2
rak

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):

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

1
montag

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.

1. Fügen Sie der Umgebungsvariable .LNK die Erweiterung "%PATHEXT%" hinzu

Dadurch kann das System Dateien mit der Erweiterung .lnk (versteckte Erweiterung für Verknüpfungen) ausführen.

2. Kopieren Sie den Standard-Link für die PowerShell-Verknüpfung als powershell-Datei in system32

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

3. Fügen Sie einer 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'"

 enter image description here

0
Donatello