Everybody has their own idea of what the perfect prompt in PowerShell consists of. My prompt is pretty boring, but it’s got one pretty unique feature – my prompt function doubles as a useful command!
You see, a lot of times I wind up in deep directories of solution and project folders in Visual Studio and I wind up with a prompt that barely fits on one line, or even worse, wraps. In this cases, I often only care about having a vague idea of where I am.
# sometimes I only want a little information about where I am. C:\Users\Josh Einstein\Documents\Visual Studio\Projects> Prompt -Minimize # sometimes I don't care at all PS Projects> Prompt -Hide # if I need to bring it back to the way it was, I can just do this. PS> Prompt -Show C:\Users\Josh Einstein\Documents\Visual Studio\Projects>
This has really come in handy for me and it’s something you could easily do with a separate script or function in your profile. But I figured, hey the prompt function is already there right? What’s it gonna hurt if I add a few parameters to it?
##############################################################################
#.SYNOPSIS
# The all-important Prompt function called by PowerShell in order to display
# the prompt, with an added twist using the built-in parameters.
#
#.DESCRIPTION
# Customizing the prompt is common in PowerShell, but this function adds some
# parameters to the function that enable some dynamic behavior. These
# parameters will not affect the way PowerShell calls the function, but they
# allow you to minimize or hide the prompt by passing switches.
#
#.PARAMETER Minimize
# Shrinks the prompt so that it shows only the leaf portion of the current
# provider path. Restore it using the -Show parameter.
#
#.PARAMETER Hide
# Sets the prompt to an ultra-compact mode, displaying only an indicator,
# and no information about the current location.
#
#.PARAMETER Show
# Restores the prompt to it's default mode which displays the full location
# of the current provider path.
#
#.LINK
# about_prompts
#
#.EXAMPLE
# Prompt -Minimize
# Prompt -Hide
# Prompt -Show
##############################################################################
function Prompt {
[CmdletBinding(DefaultParameterSetName='Prompt')]
param (
[Parameter(ParameterSetName='Minimize')]
[Switch] $Minimize,
[Parameter(ParameterSetName='Hide')]
[Switch] $Hide,
[Parameter(ParameterSetName='Show')]
[Switch] $Show
)
switch ( $PSCmdlet.ParameterSetName ) {
Minimize { $Global:PromptVisibility = 'Minimized' }
Hide { $Global:PromptVisibility = 'Hidden' }
Show { $Global:PromptVisibility = 'Default' }
Prompt {
switch ( $PromptVisibility ) {
Minimized { "PS $(Split-Path $PWD -Leaf)> " }
Hidden { "PS> " }
Default { "$PWD> " }
}
}
}
}

Posts
Sometimes that really comes in handy, for instance when running commands in deep path’s and we want to see the output in the prompt, the other option would be of course raising the width memory for the shell window but not so good. Thank you
2010-07-03 @ 7:54 pm