如果我在powershell中定义了以下字符串(或有效命令的任何其他值)
$foo = "Get-ChildItem -filter *.cmake"
我怎样才能将这个字符串(不执行命令)注入到powershell历史记录中,这样下次用户按下向上箭头时,这个命令就可用了。
htrmnn0y1#
UPDATE--修复了之前示例中的设置无法正常工作的问题
有两个历史记录需要更新,用于两个不同的目的。
上/下箭头PowerShell历史记录
更新控制台主机历史记录将更改为任何新创建的Window PowerShell显示的向上/向下箭头历史记录
Add-Content -path (Get-PSReadlineOption).HistorySavePath "Get-ChildItem -filter *.cmake"
PowerShell历史记录
通过Add-History更新将修改通过Get-History显示历史的历史文件您可以使用以下命令添加到每个文档的历史记录中
Add-History [[-InputObject] <PSObject[]>] [-Passthru] [<CommonParameters>]
步骤:1.使用插入历史所需的正确键创建条目对象1.添加到要插入的对象数组1.调用add history命令并在#2中提供对象数组使用示例中提供的命令的实际示例命令
PS C:\> $foo = [pscustomobject]@{ >> CommandLine = "Get-ChildItem -filter *.cmake" >> ExecutionStatus = "Completed" >> StartExecutionTime = "8/31/2020 2:44:16 AM" >> EndExecutionTime = "8/31/2020 2:44:16 AM" >> } PS C:\> $commands = @() PS C:\> $commands += $foo PS C:\> Add-History -InputObject $commands -PassThru Id CommandLine -- ----------- 133 Get-ChildItem -filter *.cmake
passthru仅用于显示插入的输出https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/add-history?view=powershell-7
6rqinv9w2#
虽然作为目前接受的答案的一部分列出的选项都部分工作,但问题中所述的目标从未实现(至少当我试图重现接受的解决方案时):我怎样才能将该字符串(不执行命令)注入到PowerShell历史记录中,以便下次用户按下向上箭头时可以使用该命令虽然通过Add-History的方法会附加到通过Get-History检索的历史记录中,但它不会影响通过向上箭头向后导航时建议的命令手动追加到(Get-PSReadlineOption).HistorySavePath下的文件最终会影响向上箭头历史记录,但仅在触发实际加载之后(例如启动新的PS会话)这种写入readline历史的集成方式对我来说确实有效:
Add-History
Get-History
(Get-PSReadlineOption).HistorySavePath
[Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory("Write-Host 'I'm an artificially injected suggestion'")
2条答案
按热度按时间htrmnn0y1#
UPDATE--修复了之前示例中的设置无法正常工作的问题
有两个历史记录需要更新,用于两个不同的目的。
上/下箭头PowerShell历史记录
更新控制台主机历史记录将更改为任何新创建的Window PowerShell显示的向上/向下箭头历史记录
PowerShell历史记录
通过Add-History更新将修改通过Get-History显示历史的历史文件
您可以使用以下命令添加到每个文档的历史记录中
步骤:
1.使用插入历史所需的正确键创建条目对象
1.添加到要插入的对象数组
1.调用add history命令并在#2中提供对象数组
使用示例中提供的命令的实际示例命令
passthru仅用于显示插入的输出https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/add-history?view=powershell-7
6rqinv9w2#
虽然作为目前接受的答案的一部分列出的选项都部分工作,但问题中所述的目标从未实现(至少当我试图重现接受的解决方案时):
我怎样才能将该字符串(不执行命令)注入到PowerShell历史记录中,以便下次用户按下向上箭头时可以使用该命令
虽然通过
Add-History
的方法会附加到通过Get-History
检索的历史记录中,但它不会影响通过向上箭头向后导航时建议的命令手动追加到
(Get-PSReadlineOption).HistorySavePath
下的文件最终会影响向上箭头历史记录,但仅在触发实际加载之后(例如启动新的PS会话)这种写入readline历史的集成方式对我来说确实有效: