获取PowerShell的所有历史记录

您所在的位置:网站首页 查看历史记录命令 获取PowerShell的所有历史记录

获取PowerShell的所有历史记录

2023-10-31 13:13| 来源: 网络整理| 查看: 265

PowerShell默认的history命令只能查看当前窗口的历史记录,很不方便

可以使用以下方法获取PowerShell的所有历史记录,简单记录一下

一、PSReadline

当前版本(5.1)默认安装了Readline,其为PowerShell提供了诸多实用功能,包括了历史记录的记录功能。

# 获取可配置的选项的值 Get-PSReadLineOption # 获取 PSReadLine 模块的键绑定 Get-PSReadlineKeyHandler

可以看到其历史记录功能如下:

历史记录功能 ====== Key Function Description --- -------- ----------- Alt+F7 ClearHistory 从命令行历史记录(不是 PowerShell 历史记录) 中删除所有项 Ctrl+s ForwardSearchHistory 以交互方式向前搜索历史记录 F8 HistorySearchBackward 搜索历史记录中以当前输入开头的上一项,例如 PreviousHistory (如果输入为空) Shift+F8 HistorySearchForward 搜索历史记录中以当前输入开头的下一项,例如 NextHistory (如果输入为空) DownArrow NextHistory 使用历史记录中的下一项替换输入 UpArrow PreviousHistory 使用历史记录中的上一项来替换输入 Ctrl+r ReverseSearchHistory 以交互方式向后搜索历史记录

默认的查看历史记录的命令为history,但只能查看当前命令行的命令

而当前版本的Readline也没有提供直接查看history功能

可以使用 Get-Content (Get-PSReadlineOption).HistorySavePath获得PSReadline保存的历史记录,但是这种方法太长了,找了半天发现当前版本并没有什么其他方法。

二、写函数 # Add Get-AllHistory function for powershell function Get-AllHistory { param ( $Count ) if($Count){ $his = Get-Content (Get-PSReadLineOption).HistorySavePath -tail $Count } else{ $his = Get-Content (Get-PSReadLineOption).HistorySavePath } $n = $his.Length $out = @() for($i=1;$i -le $n;$i++) { $out = $out + "$i $($his[$i-1])" } return $out }

打开配置文件,把这个函数加进去

notepad $PROFILE 三、使用 Get-AllHistory Get-AllHistory 100 #最近一百条历史记录

如果还是觉得Get-AllHistory也太长了

可以设个别名,也加到$PROFILE里面

Set-Alias -Name his -Value Get-AllHistory


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3