Gibt es eine Möglichkeit, Powershell dazu zu bringen, die cmd-Eingabeaufforderung zu übernehmen?

Gibt es eine Möglichkeit, Powershell dazu zu bringen, die cmd-Eingabeaufforderung zu übernehmen?

In der cmd-Shell ist es möglich, die Eingabeaufforderung mit dem Befehl PROMPT usw. festzulegen (und zu speichern). Wenn Sie jedoch von cmd aus in Powershell gehen, wird die standardmäßige Windows-Eingabeaufforderung wiederhergestellt – normalerweise das aktuelle Verzeichnis.

Gibt es eine Möglichkeit, Powershell zu zwingen, die aktuelle Windows-Eingabeaufforderung zu verwenden?

Antwort1

Dank der sehr hilfreichen Kommentare funktioniert es. Nur für den Fall, dass jemand anderes auf das gleiche Problem stößt:

$profile

Gibt den Speicherort an, an dem das Powershell-Profil vorhanden ist (oder vorhanden sein würde). Wenn esnichtexistiert, würde der folgende Befehl es erstellen:

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

Hier können wir einfach eine Eingabeaufforderungsfunktion schreiben. Ich stelle meine normalerweise auf den aktuellen Benutzer ein, also:

function prompt {"PS: $(echo 'RobbieDee')>"}

Antwort2

Promptwird global eingestellt über%UserProfile%\Documents\WindowsPowerShell\profile.ps1

  • ohne Farbe:

    Function set-prompt {
      "$ESC[$($executionContext.SessionState.Path.CurrentLocation)$('$' * ($nestedPromptLevel + 1)) $ESC[0m"
    }
    
  • mit Farbe:

    switch ($Action) {
    
        "Default" {
            Function global:prompt {
                if (test-path variable:/PSDebugContext) { '[DBG]: ' }
                    write-host " "
                    write-host ("$ESC[48;2;40;40;40m$ESC[38;2;170;210;0m$(Get-Location) $ESC[0m $ESC[0m")
    
                if ( $host.UI.RawUI.WindowTitle -match "Administrator" ) {
                    $Host.UI.RawUI.ForegroundColor = 'Red'
                    $(if ($nestedpromptlevel -ge 1) {
                        write-host ('PS $$ ') -ForegroundColor Red -NoNewLine
                    } else {
                        write-host ('PS $ ') -ForegroundColor Red -NoNewLine
                    })
                } else {
                    $(if ($nestedpromptlevel -ge 1) {
                        write-host ('PS $$ ') -ForegroundColor Blue -NoNewLine
                    } else {
                        write-host ('PS $ ') -ForegroundColor Blue -NoNewLine
                    })
                }
    
                return " "
            }
        }
    }
    
    set-prompt Default
    
    • Zeigen Sie dem Benutzer eine Eingabeaufforderung mit farbigem Text und einem Administrator eine Eingabeaufforderung mit rotem Text an.
    • Ermöglicht das schnelle Wechseln zwischen Profilen:
      • DefaultAbschnitt darunter kopieren/einfügen und entsprechend bearbeiten(inkl. Name, zB Default). Sitzung neu laden und Eingabeaufforderung über set-prompt Default|| wechselnset-prompt <name>

verwandte Informationen