58 votes

Configurer Windows PowerShell pour afficher uniquement le nom du dossier actuel dans l'invite Shell.

J'utilise PowerShell sous Windows 7. Comment puis-je configurer PowerShell pour qu'il affiche uniquement le nom du dossier actuel (au lieu du chemin complet) dans l'invite Shell ?

Par exemple, au lieu de C:\folder\directory\name> Je veux name> .

1voto

LPChip Points 53736

J'ai voulu une invite plus élaborée et j'ai construit une nouvelle invite. Cette réponse n'est pas destinée à remplacer la réponse actuelle, mais plutôt à être un complément pour ceux qui tomberaient dessus plus tard. Cette invite prend totalement en charge les chemins d'accès au réseau et est très élégante.

function Prompt
{
    write-host "PS " -ForegroundColor Magenta -NoNewline
    write-host (get-date -Format "yyyy-MM-dd HH:mm:ss") -ForegroundColor Yellow -NoNewline
    write-host " | " -ForegroundColor DarkGray -NoNewline
    write-host "\\$env:COMPUTERNAME " -NoNewline
    write-host " | " -ForegroundColor DarkGray -NoNewline
    if( (Get-Location).Drive -ne $null)
    {
        write-host (Get-Location) 
        $networkdrive = $false
    }
    else
    {
        $networkdrive = $true
        $first, $second, $third, $folder = (Get-Location).path.Split("\")
        write-host "\" -NoNewline
        $folder | foreach-object {
            write-host "\$_" -NoNewline
        }
        write-host
    }
    write-host "PS " -ForegroundColor Magenta -NoNewline
    if( (Get-Location).Drive -ne $null)
    {
        write-host "$((Get-Location).Drive):\"  -NoNewline
    }
    else
    {
        write-host "\\$((Get-Location).path.Split("\")[3])\"  -NoNewline
    }

    if( (Get-Location).path.Split("\").Count -gt 2 -and $networkdrive -eq $false)
    {
        write-host "…\"  -NoNewline
    }
    if( (Get-Location).path.Split("\").Count -gt 5 -and $networkdrive -eq $true)
    {
        write-host "…\"  -NoNewline
    }    write-host "$((Get-Location).path.Split("\")[-1])"  -NoNewline
    write-host ">" -NoNewline
    return " "
}

Un message s'affiche comme suit :

PS 2021-03-24 02:03:39 | \\MYPC  | \\Server\Share\Folder1\Folder2
PS \\Server\…\Folder2> cd c:\Users\User
PS 2021-03-24 02:03:39 | \\MYPC  | C:\Users\User
PS C:\…\User>

0voto

johncgl Points 1

Pour posh-git, la meilleure façon que j'ai trouvée est de personnaliser le fichier $GitPromptSettings.DefaultPromptPath.Text propriété .

Dans le profil :

    $GitPromptSettings.DefaultPromptPath.Text = '$(Split-Path -leaf -path ($ExecutionContext.SessionState.Path.CurrentLocation))'

Les résultats sont les suivants (les images ne peuvent pas encore être intégrées, apparemment) :

invite posh-git n'affichant que le répertoire courant

0voto

satnhak Points 101

Si vous utilisez anaconda, vous voudrez probablement changer la fonction de votre profil en

function Prompt {
    $p = Split-Path -leaf -path (Get-Location)
    "$env:CONDA_PROMPT_MODIFIER $p> "
}

Toutefois, je pense qu'il est un peu exagéré de se contenter d'une division sur le dernier élément du chemin. Le problème que j'essaie de résoudre est celui des chemins qui occupent une ligne entière (ce qui est en fait assez courant dans une base de code).

function Prompt {
    $maxLength = 50
    $p = (Get-Location).Path
    if ($p.Length -gt $maxLength) {
        $s = Split-Path -leaf -path (Get-Location)
        if ($s.Length -gt $maxLength - 1) {
            $p = $s
        }
        else {
            $p = "...$($p.Substring($p.Length - $maxLength + 3))"
        }
    }

    "$env:CONDA_PROMPT_MODIFIER $p> "
}

Vous pouvez vous débarrasser de la $env:CONDA_PROMPT_MODIFIER si vous n'utilisez pas Anaconda

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X