如何让Azure PowerShell记住命令行历史记录?

时间:2015-11-12 15:17:18

标签: powershell azure

Azure PowerShell会记住命令行历史记录(几十年来几乎可以使用shell),但不幸的是,它在退出并重新启动后很快就会遭受完全失忆。因此它无法在会话之间记住它。

有没有办法让 Azure PowerShell 在下一个会话中记住命令行历史记录?

1 个答案:

答案 0 :(得分:2)

我目前的方法基于this article

第1步:创建PowerShell配置文件see Example 3 here。如果已存在,请跳至步骤2.

第2步:将其添加到您的个人资料中。

$MaximumHistoryCount = 1KB
if (!(Test-Path "$((Get-ChildItem $PROFILE).DirectoryName)\history.csv"))
{   New-Item "$((Get-ChildItem $PROFILE).DirectoryName)\history.csv" -ItemType File -Force
}

function bye
{   Get-History -Count $MaximumHistoryCount | Export-CSV -Path "$((Get-ChildItem $PROFILE).DirectoryName)\history.csv"
    exit
}

if (Test-path "$((Get-ChildItem $PROFILE).DirectoryName)\history.csv")
{   Import-CSV "$((Get-ChildItem $PROFILE).DirectoryName)\history.csv" | Add-History
}
register-engineevent PowerShell.Exiting -action { bye }

注意:

  • 您可能需要使用其他路径,例如原始文章的位置。
  • 使用Get-HistoryInvoke-History运行以前的命令。
  • 您也可以使用#[tab],例如:输入#5,然后按Tab键展开原始命令。
  • 有些用户报告说,只有在他们通过键入exit而不是关闭窗口退出PowerShell时才会保存历史记录。
  • 这是针对PowerShell历史记录,而不是控制台缓冲区。向上/向下按下仅适用于您在当前控制台上输入的命令。

其他资源和一些替代方法:

PSReadLine提供"自动保存历史记录,包括在实时会话中共享历史记录。" PSReadLine还做了很多事情,而不仅仅是历史保存。此外,如果您想要在历史记录中上下变得更有用,那么最后一个列出了使其更有用的其他键绑定。