Shay Levy

March 10, 2008

If you are used to measuring commands in PowerShell then this custom prompt can be useful for you. Instead of measuring commands manually (with measure-command), the custom prompt code (below, comments inline) automates the measuring process and presents three bits of information at the console title. Here is how it looks:

The first part (c:\scripts) shows the current working directory.

The second part (Session Execution Time: 00:12:15) displays, in HH:mm:ss format, the total amount of time it took PowerShell to execute all commands since the console had started.

The last part (Last [00:01.546]) displays how long it took the last command to be completed, in mm:ss.millisecond format.

The last part of the prompt (PS 3>) shows the ID of the last executed command, you ca use the ID to invoke commands, instead of retyping them, from the commands history by passing the command ID, see the help for get-history.

To use the prompt, copy the code below and paste it into your $profile, restart PowerShell and type some commands, you’ll see the console title changes.

*** UPDATE # 1 ***Already found a bug. Repeatedly pressing the ENTER key causes the global $pshUse to add-up the last command execution time. The code below includes the fix.

*** UPDATE # 2 ***

Added support for $NestedPromptLevel visualization. Thanks Andy!Each nested prompt level is indicated by an extra “>”