I'm using Powershell in Windows 7. How to configure Powershell so that it only displays the current folder name (instead of the full path) in the shell prompt?

For example, Instead of C:\folder\directory\name>, I want name>.

  • If you want the prompt with a path relative to your home directory, this worked for me: function prompt { "[$((''+$PWD).replace($HOME, '~'))]> " } – Chris Jun 6 at 4:34

You have to customize the prompt function in your PowerShell profile (%userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1); it may be blank or even not exist if you have never modified it before.

  1. Open your profile (e.g., open the aforementioned file or while in PowerShell, Notepad $profile)

  2. Add the following to your profile:

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
  3. Save the profile

  4. Restart PowerShell

    Optional. If you get a message that says you are not allowed to run scripts, then you need to copy/paste this line in PowerShell:

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

    and restart.

Windows PowerShell execution policies let you determine the conditions under which Windows PowerShell loads configuration files and runs scripts.

You can set an execution policy for the local computer, for the current user, or for a particular session. You can also use a Group Policy setting to set execution policy for computers and users.

Source: Microsoft Documentation

| improve this answer | |
  • 1
    Not quite right. [System.IO.Directory]::GetCurrentDirectory() does not represent powershell's current location, but rather the process working directory, which are not always the same. Replace with Get-Location – zdan Jul 9 '12 at 20:57
  • +1, but I would use get-location instead of GetCurrentDirectory. Remember that PowerShell does not always mean the file system. Using the registry snap-in, I could use cd hkcu: and now the prompt would be totally off. – vcsjones Jul 9 '12 at 20:58
  • @Synetech It's buried quite deep in the formatting help :\ – Bob Jul 9 '12 at 21:19
  • 1
    You can also use $PWD instead of calling Get-Location. E.g. function prompt { (Split-Path -Leaf $pwd) + '> ' } – Joey Nov 6 '13 at 11:43
  • 1
    You don't have to define prompt in your profile file. It just has to be in the global session scope. The default seems equivalent to function prompt {"PS " + (Get-Location) + ">"}, while function prompt {""} gives the same as function prompt {"PS>"}. Use function prompt {" `b"} to get an empty prompt (at least visually...). – masterxilo Dec 17 '17 at 10:31

As an additional note, I couldn't do @Synetech's command until I first created the $profile.

  1. Open PowerShell
  2. Type $profile and hit enter. This will display the profile path PowerShell relies on, even if it doesn't exist (it didn't for me). My path was different than what @Synetech posted above.

  3. I had to create both the WindowsPowerShell folder and Microsoft.PowerShell_profile.ps1 file.

  4. Add @Synetech's code and restart PowerShell.


If you're using posh-git (which is installed when using GitHub desktop), @Synetech's script will override the posh-git prompt. Additional prompt scripts for posh-git here.

| improve this answer | |
  • 2
    It's the same. %userprofile% expands to C:\Users\[username] – DavidPostill Mar 15 '17 at 15:39
  • @DavidPostill that was my understanding, but my PowerShell didn't recognize %userprofile% as a directory. I don't believe my PowerShell is customized yet to recognize those paths, perhaps due to network settings? – Bryan Mar 15 '17 at 15:56
  • 2
    The syntax is different in PowerShell: $Env:userprofile is equivalent to echo %userprofile% – DavidPostill Mar 15 '17 at 16:37
  • $profile has a different value in ISE vs. the regular prompt, you may have to create 2 files. – Chris Oct 14 '19 at 13:36

Change the prompt to show current folder without full path and greater than symbol at the end:

One way could be:

Function Prompt { "$( ( get-item $pwd ).Name )>" }


Function Prompt { "$( Split-Path -leaf -path (Get-Location) )>" }


Function Prompt { "$( ( Get-Location | Get-Item ).Name )>" }
| improve this answer | |
  • 1
    The first and third are better than the accepted answer in that they work for network folders. Split-Path won't function correctly on a path like \\myserver\my\path. – Chris Oct 14 '19 at 13:32

I found this was pretty easy - combining @Synetech's answer and the info found at PowerShell profiles. Because I am a newbie to PS. My steps (for vscode):

  1. test-path $profile (in the PS command prompt - is there a profile set up?)
  2. new-item -path $profile -itemtype file -force (assuming the answer to the above is false)
  3. notepad $profile (opens notepad)
  4. paste in

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
  5. save (you shouldn't have to chose a location, it is already done for you)
  6. reload vscode - you will probably get a message about running scripts (or just do next step before reload)
  7. Set-ExecutionPolicy RemoteSigned -Scope CurrentUser (at your PS prompt, from the SuperUse answer)

  8. reload vscode

So mostly @Synetech's answer (upvoted) with a bit to get started easily - especially step 2 makes this very easy.

| improve this answer | |

The below single line works fine for me

(Get-Location | Get-Item).Name

| improve this answer | |
  • that wasn't the question - see above correct answer from Jelgab – hfrmobile Oct 8 '18 at 12:01
  • This is a good way for one instance via powershell prompt – Zimba Mar 17 at 14:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.