Windows Tip Sheet
PowerShell History Lesson
Double the PowerShell command buffer -- your fingers will thank you for this little tip.
- By Jeffery Hicks
- 09/05/2007
If you've spent any time at a command prompt, you likely know about the command buffer. PowerShell also has a command buffer which, by default, will store the last 64 commands you've entered. You can change that by modifying the $MaximumHistoryCount variable:
$MaximumHistoryCount=128
If you add this line to your profile, you'll double the number of saved commands. To see where you've been, use the History alias or the Get-History cmdlet. If you really dislike typing, you can shorten the alias to "h".
The cmdlet will show you the last 32 commands. You can specify the number of commands to see like this:
History –count 50
To see the entire contents of your command history try this:
history -count $maximumhistorycount | more
History information is stored in a HistoryInfo object. One of its properties is commandline. This means you can find related commands:
h | where {$_.commandline -match "service"}
Now, you'll be able to see all the commands with the word "service" in the command, including the history id.
To run a saved command, use the Invoke-History cmdlet and specify the ID number you saw from the History command:
Invoke-History 1340
This runs the command with id 1340. You can also use the aliases r and ihy.
When you execute a previous command using Invoke-History, PowerShell will treat it as if you typed it for the first time. This means you can pipe the output to other cmdlets. Let me show you.
On my computer, command id 1359 is "gwmi win32_service". I can reuse this command in a pipeline:
r 1359 | where {$_.State -eq "stopped"} | Select Name
Tech HelpJust An
E-Mail Away |
Got a Windows, Exchange or virtualization question
or need troubleshooting help? Or maybe you want a better
explanation than provided in the manuals? Describe
your dilemma in an e-mail to the MCPmag.com editors
at [email protected];
the best questions get answered in this column and garner
the questioner with a nifty Redmond T-shirt.
When you send your questions, please include your
full first and last name, location, certifications (if
any) with your message. (If you prefer to remain anonymous,
specify this in your message, but submit the requested
information for verification purposes.) |
|
|
The output of the first expression is replaced with "gwmi win32_service," so I get a list of all stopped services. Granted, this saved command was pretty simple to type. Once you start building long and complex commands, being able to recall them easily and quickly will make a major difference in your PowerShell experience.
About the Author
Jeffery Hicks is an IT veteran with over 25 years of experience, much of it spent as an IT infrastructure consultant specializing in Microsoft server technologies with an emphasis in automation and efficiency. He is a multi-year recipient of the Microsoft MVP Award in Windows PowerShell. He works today as an independent author, trainer and consultant. Jeff has written for numerous online sites and print publications, is a contributing editor at Petri.com, and a frequent speaker at technology conferences and user groups.