Powershell 停止使用其持久历史记录(Windows 11)。当我启动新的 Powershell 实例时,以前的会话中的命令不会显示。一旦我第一次在新会话中使用命令,就可以通过 F8/箭头等调用它们。
我目前检查/发现的情况:
检查历史文件时,
C:\Users\[username]\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
我注意到命令不再保存在那里。一旦我输入命令
(Get-PSReadLineOption).HistorySavePath
(返回我在上一个要点中提到的路径),一切都会恢复正常。已保存在那里的命令可以通过 F8 等再次访问,新命令也会再次保存到历史文件中。使用
powershell -noexit Set-PSReadlineOption -HistorySavePath "C:\Users\admin\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"
脚本启动 powershell 也同样有效。
我还没有弄清楚为什么 Powershell 不再默认使用历史文件。我记得它以前还可以用,但我不知道为什么它停止工作了。但从历史文件的内容来看,这已经是很久以前的事了。
知道如何让它再次工作吗没有每次启动时都必须应用的解决方法(例如手动输入“历史记录保存命令”或使用“参数来启动它”)?
补充1:
这些命令给出以下输出(注意:使用其中任何一个之后,历史记录都可以再次正常工作,命令会保存到历史记录中,除了第一个已使用并“重新激活”历史记录的命令外,可以调用完整的命令)
PS C:\> (Get-PSReadlineOption).HistorySaveStyle
SaveIncrementally
PS C:\> (Get-PSReadlineOption).HistoryNoDuplicates
True
PS C:\> (Get-PSReadlineOption).MaximumHistoryCount
4096
补充2:
$PROFILE
给出以下输出(该命令不会影响历史记录的行为)。注意:列出的文件不存在于指示的目录中:
PS C:\> $PROFILE | Get-Member -Type NoteProperty
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
AllUsersAllHosts NoteProperty string AllUsersAllHosts=C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
AllUsersCurrentHost NoteProperty string AllUsersCurrentHost=C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts NoteProperty string CurrentUserAllHosts=C:\Users\username\Documents\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost NoteProperty string CurrentUserCurrentHost=C:\Users\username\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
补充 3 - 包括一个解决方法:
似乎 PSReadLine 模块未加载。使用Import-Module PSReadLine
可使历史记录正常工作。作为一种解决方法,我将命令放入 PS 配置文件中,这样它就会自动执行修复了问题,但没有解决根本原因。这可能也是为什么一旦使用与模数相关的命令,历史记录就会开始起作用的原因,我假设 PowerShell 会自行加载该模块。
补充4:
该问题特定于用户配置文件。在新的用户配置文件中,历史记录工作正常。使用 和 进行的标准检查sfc
未dism
产生chkdsk
任何结果。
答案1
正如我的问题中所述,作为一种解决方法,我目前Import-Module PSReadLine
在我的配置文件中使用,我通过 访问该文件notepad $PROFILE
。由于问题仅存在于我的个人资料中,因此这对我的用户有效,而不会影响任何其他用户。
虽然这不能解决问题 - 但目前它解决了我当前的所有问题。
答案2
您是否尝试过禁用屏幕阅读器模式?
设置 ItemProperty 'registry::HKEY_CURRENT_USER\Control Panel\Accessibility\Blind Access' 开启 0 https://stackoverflow.com/a/66749811/4191109