Describes how to get and run commands in the command history.
When you enter a command at the command prompt, PowerShell saves the command in the command history. You can use the commands in the history as a record of your work. And, you can recall and run the commands from the command history.
PowerShell has two different history providers: the built-in history and the history managed by the PSReadLine module. The histories are managed separately, but both histories are available in sessions where PSReadLine is loaded.
Using the PSReadLine history
The PSReadLine history tracks the commands used in all PowerShell sessions.
The history is written to a central file per host. That history file is
available to all sessions and contains all past history. The history is not
deleted when the session ends. Also, that history cannot be managed by the
*-History cmdlets. For more information, see
Using the built-in session history
The built-in history only tracks the commands used in the current session. The history is not available to other sessions and is deleted when the session ends.
PowerShell has a set of cmdlets that manage the command history.
||Gets the command history.|
||Runs a command in the command history.|
||Adds a command to the command history.|
||Deletes commands from the command history.|
Keyboard Shortcuts for Managing History
In the PowerShell console, you can use the following shortcuts to manage the command history.
- UpArrow - Displays the previous command.
- DownArrow - Displays the next command.
- F7 - Displays the command history.
- ESC - To hide the history.
- F8 - Finds a command. Type one or more characters then press F8. Press F8 again the next instance.
- F9 - Find a command by history ID. Type the history ID then press F9. Press F7 to find the ID.
<string>Tab - Search the history for
*<string>*and returns the most recent match. If you press Tab repeatedly, it cycles through the matching items in your history.
These key bindings are implemented by the console host application. Other applications, such as Visual Studio Code or Windows Terminal, can have different key bindings. The bindings can be overridden by the PSReadLine module. PSReadLine loads automatically when you start a PowerShell session. With PSReadLine loaded, F7 and F9 are not bound to any function. PSReadLine does not provide equivalent functionality. For more information, see about_PSReadLine.
$MaximumHistoryCount preference variable determines the maximum number of
commands that PowerShell saves in the command history. The default value is
For example, the following command lowers the
$MaximumHistoryCount to 100
$MaximumHistoryCount = 100
To apply the setting, restart PowerShell.
To save the new variable value for all your PowerShell sessions, add the assignment statement to a PowerShell profile. For more information about profiles, see about_Profiles.
For more information about the
$MaximumHistoryCount preference variable, see
Order of Commands in the History
Commands are added to the history when the command finishes executing, not when the command is entered. If commands take some time to be completed, or if the commands are executing in a nested prompt, the commands might appear to be out of order in the history. Commands that are executing in a nested prompt are completed only when you exit the prompt level.