2012-12-10 4 views
21

Ich fange an, PowerShell für ein Windows-Projekt mit node.js zu verwenden. Wenn ich viele Programme (einschließlich Knoten, Supervisor und Npm) über die Powershell-Befehlszeile ausführe, ändern sich die Hintergrund- und Vordergrundfarben für PowerShell von den standardmäßigen Powershell-Farben. Wie kann ich ein konsistentes Erscheinungsbild in PowerShell beibehalten, damit ich die Ergebnisse der Ausführung von Befehlen einfach lesen kann?Wie können Sie die Farben für Windows PowerShell zurücksetzen, wenn sie nach dem Ausführen eines Programms beschädigt werden?

+0

Wow, 3 gute Antworten. – jimhark

Antwort

14

Ich habe dieses Problem mit MSBuild, vor allem, wenn ich Ctrl + C ein Build. Dies ist, was ich in meiner profile.ps1 Datei setzen:

$OrigBgColor = $host.ui.rawui.BackgroundColor 
$OrigFgColor = $host.ui.rawui.ForegroundColor 

# MSBUILD has a nasty habit of leaving the foreground color red 
# if you Ctrl+C while it is outputting errors. 
function Reset-Colors { 
    $host.ui.rawui.BackgroundColor = $OrigBgColor 
    $host.ui.rawui.ForegroundColor = $OrigFgColor 
} 

Dann einfach rufe ich neu-Farben, wenn MSBuild sie vermasselt hat.

13

zunächst ein Profil in Powershell erstellen, wenn Sie noch keines haben:

test-path $profile 
new-item -path $profile -itemtype file -force 
notepad $profile 

Zweitens setzen diesen Code in der Datei:

function prompt { 
    [Console]::ResetColor() 
} 

Drittens prüfen, ob Powershell wird es Ihnen ermöglichen, Skripte ausführen

Get-ExecutionPolicy 

Wenn dies sagt Restricted dann den folgenden als Administrator ausführen (bitte sicher, dass Sie die Auswirkungen auf die Sicherheit verstehen):

Set-ExecutionPolicy RemoteSigned 

Öffnen Sie eine neue Powershell-Eingabeaufforderung und Sie sollten in der Lage Laufknoten oder andere sein Befehle ohne Farbprobleme.

+3

Kommentieren, wenn Sie posh-git verwenden, gibt es eine Chance, dass Sie das Standardprofil verwenden, das eine "prompt" -Funktion definiert, also stellen Sie sicher, dass Sie '[Console] :: ResetColor()' zu dieser Funktion hinzufügen Überschreibe es und verliere die ganze noble Freundlichkeit. – Pureferret

52

Als einmaliger Vorgang gerade dies auszuführen:

> [Console]::ResetColor() 

From the docs: (Hervorhebung hinzugefügt)

Die Vorder- und Hintergrundfarben auf die Farben wiederhergestellt sind, dass der aktuelle Prozess existierte, als begann.

+3

Dies sollte die akzeptierte Antwort sein. Keine Profileinrichtung notwendig. – Matt

+1

Es wäre eine gute akzeptierte Antwort, außer dass es für mich nicht funktioniert, und tatsächlich, nachdem Sie das Problem durch Kopieren der '$ host.ui.rawui'-Werte aus einem anderen Fenster manuell behoben haben, kehrt das Problem zurück. – mdonoughe

Verwandte Themen