Get-Help about_Prompts
<#
LONG DESCRIPTION
The Windows
PowerShell command prompt indicates that Windows PowerShell
is ready to run a
command:
PS C:\>
The Windows
PowerShell prompt is determined by the built-in Prompt
function. You can
customize the prompt by creating your own Prompt
function and saving
it in your Windows PowerShell profile.
#>
One of my biggest issues with the default prompt is that I work with a lot of nested folders and network shares. It makes the path so long because the path is in there. So I change my prompt to just show the current folder and place the full path in the tittle bar.
One other thing I do is add basic command logging. I would use transcripts, but I don't want something that verbose. So I just save my last command to a text file whenever I run it.
The last thing I so is calculate where in the history the next command will be and add that to my prompt.
Here is my prompt function:
$PSLogPath =
("{0}{1}\Documents\WindowsPowerShell\log\{2:yyyyMMdd}-{3}.log"
-f $env:HOMEDRIVE, $env:HOMEPATH, (Get-Date), $PID)
Add-Content -Value "# $(Get-Date) $env:username $env:computername" -Path $PSLogPath
Add-Content -Value "# $(Get-Location)" -Path $PSLogPath
function prompt
{
$LastCmd
= Get-History
-Count 1
if($LastCmd)
{
$lastId
= $LastCmd.Id
Add-Content
-Value "# $($LastCmd.StartExecutionTime)" -Path $PSLogPath
Add-Content
-Value "$($LastCmd.CommandLine)" -Path $PSLogPath
Add-Content
-Value ""
-Path $PSLogPath
}
$nextCommand
= $lastId
+ 1
$currentDirectory
= Split-Path
(Get-Location) -Leaf
$host.UI.RawUI.WindowTitle =
Get-Location
"$nextCommand PS:$currentDirectory>"
}