我非常喜欢新的 Windows 终端,它允许用户为“新选项卡”操作定义自定义命令。问题是 - 当您运行此命令时,您无法重复它。例如,我有一个通过 SSH 连接到远程计算机的命令。当连接断开时,我不能只按向上箭头来找到最后一个命令并再次运行它。我的命令定义如下:
powershell.exe -noexit -Command "vt-vm"
它会调用我的函数vt-vm
但不会将其添加到历史记录中。
答案1
问题是 PSReadLine 只会使用在命令行中输入的命令来更新历史记录。但是,你可以直接使用历史记录文件来执行此操作
powershell.exe -noexit -Command "vt-vm ; Add-Content -Value 'vt-vm' -Path (Get-PSReadLineOption).HistorySavePath"
您现在可以按向上箭头重新运行您的功能。
答案2
至于……
“如何将我正在运行的命令添加到历史记录中?”
...您不应该因为任何原因手动执行此操作。
您的系统发生了其他事情,因为我刚刚在我的系统上测试了这一点,并且它按预期添加到会话历史记录中。
从 Windows 运行 GUI 或 cmd.exe 选项并输入...
powershell.exe -noexit -命令'Start-ConsoleCommand -ConsoleCommand ping localhost'
# Results in the current consolehost window
Start-ConsoleCommand -ConsoleCommand ping localhost
Get-History
Id CommandLine
-- -----------
1 ' Start-ConsoleCommand -ConsoleCommand ping localhost'
(Get-History).Count
2
Get-History
Id CommandLine
-- -----------
1 ' Start-ConsoleCommand -ConsoleCommand ping localhost'
2 Get-History
3 (Get-History).Count
如果我使用普通的可执行文件,也会发生同样的事情。