PowerShell 运行字符串作为命令并将其添加到历史记录中

PowerShell 运行字符串作为命令并将其添加到历史记录中

我非常喜欢新的 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

如果我使用普通的可执行文件,也会发生同样的事情。

相关内容