【发布时间】:2020-11-03 00:49:16
【问题描述】:
我是 Win 10 下使用 PowerShell 5.1 的新手。
我在修补历史。到目前为止,我设法在与PSReadline 的会话中保持了持久的历史记录。 *
但这是一个“有限”的持久历史记录,因为只有命令保存在文本文件中,在启动新会话时会读取该文件。所以很多关于HistoryInfo 对象的信息都丢失了,尤其是StartExecutionTime。 那么,
-
Get-Content (Get-PSReadlineOption).HistorySavePath给出所有没有“时间戳”的命令,并且 -
Get-History提供带有时间戳的命令,但仅适用于当前会话。
我习惯了history in bash,这两个点都对。
This old doc (2009) 显示了一种可能的解决方法。
在与Get-History | Export-Clixml $env:PSDIR'\my_history.xml' 离开会话之前,我设法导出了所有历史信息。
在新会话开始时执行 Import-Clixml $env:PSDIR'\my_history.xml' | Add-History 会恢复完整的历史记录,包括时间戳。
我猜缺少的是:
-
一种在关闭会话时自动导出历史记录的方法。 我什至不知道这是否可能。
-
导入后删除历史记录的第一行,因为它包含导入命令本身。我没有做这个,但我想我可以处理它。并不需要。如果导入命令在启动脚本中执行,它不会进入历史记录。
这是实现预期结果的可行方法吗? 如果是这样,我怎么能化身第 1 项?
还有其他选择吗?
【问题讨论】:
-
查看 Add-History cmdlet。 docs.microsoft.com/en-us/powershell/module/…
-
@RetiredGeek - 我检查了文档。除了我已经在 OP 中发布的内容之外,我没有发现它有什么帮助。如果您有更具体的建议,我将不胜感激。
-
查看 Aaron Jensen 的回答:stackoverflow.com/questions/8353581/…。有了这些信息,您应该能够运行上面的代码以在退出时保存历史记录。
标签: powershell psreadline command-history