在 Powershell 中,有没有办法将输入的命令保存到历史记录中而不执行它以供以后执行?

在 Powershell 中,有没有办法将输入的命令保存到历史记录中而不执行它以供以后执行?

在 PowerShell 中,是否有一种方法,在输入长命令或复杂命令后,将该命令提交到历史缓冲区,但不执行它?

例如,你开始在 posh-git:directory 中输入 git commit:

git commit -m "Added the library 'ASDF' and did some initial integration into the project" [pause]

当你输入这些内容时,我在想......呃,我需要先做一些事情,比如添加一个额外的文件来提交先做其他事情,或者创建一个目录或一些东西(人为的情况,我意识到PowerShell会自动创建它,我意识到git可以“修改提交”。)所以我想将该提交消息保存到历史缓冲区中,但不运行它,然后在我说暂存其他文件或之前做一些事情之后再调用它。

根据这篇文章,Windows PowerShell 快捷键,似乎没有按键可以执行此操作。

Esc键(和Ctrl+ C)将取消命令并清除它...我需要将其保存到历史记录中,以便稍后运行,从而保留我的输入。有这样的按键吗?

答案1

你也可以在命令前放置一个注释标签,如下所示:

#Get-ChildItem

当您准备执行时,向上箭头指向命令,Home然后按Del,然后Enter执行。

答案2

经过一些调用后,这似乎也有效:

$VariableName = "Windows Command"

然后,执行:

Invoke-Expression "$VariableName"

Ping 的示例:

在此处输入图片描述

我还可以以完全相同的方式使用 PowerShell 表达式:

PS H:> $Outlooks = “获取进程-名称 Outlook -Verbose | fl StartTime,线程” PS H:> Invoke-Expression “$Outlooks”

本质上,我相信正在发生的事情是我们正在为第一个变量创建一个字符串(它看起来就是这样,很直接),然后当我们在“”里面调用我们的变量时,它会强制解释器扩展该变量,从而导致它调用正确的命令。

答案3

许多命令都支持-whatif可以添加和稍后删除的参数。不过,我不得不说我更喜欢注释的想法。

答案4

这是一个老话题,但我在研究解决方案时偶然发现了它。
你可以看看我的GitHUB 上的 CmdFav 模块

相关内容