簡體   English   中英

加載PowerShell歷史記錄

[英]Loading PowerShell history

我已經嘗試使用該命令加載我的PowerShell歷史記錄

Import-Clixml ~\history.clixml | Add-History

在我的$個人資料中。

我還編寫了一個自定義退出函數來保存它們:

function global:xx 
{
  Get-History | Export-Clixml ~\history.clixml
  exit
}

我鍵入“xx”退出PowerShell,然后重新啟動PowerShell。 雖然它加載我的history.clixml沒有任何錯誤,但是當我單擊向上箭頭鍵時,我看不到任何命令出現。 這個鍵通常可以讓我從命令歷史記錄中訪問我以前的命令。

我以前看過這個,但這是不可能的。 使用向上箭頭和功能鍵訪問的緩沖區(例如使用F8完成以及在您按F7時看到的列表)是每個會話,無法修改。

但是,要快速訪問歷史記錄中的命令(包括使用“ 添加歷史記錄”添加的命令) ,可以鍵入后跟一個模式,然后單擊[TAB]循環瀏覽歷史記錄中與該模式匹配的所有命令。 例如, #dsquery[TAB]將擴展到包含“dsquery”的歷史記錄中的最新命令,並且多次按[TAB]將向后循環通過包含“dsquery”的任何其他命令。

模式的匹配方式由TabExpansion函數決定。 默認情況下,制表符擴展歷史記錄條目主要適用於命令中的字符串,沒有符號或空格。 您可以通過輸入$function:TabExpansion來檢查函數的代碼。 如果需要,可以通過定義自己的TabExpansion函數來修改選項卡擴展的行為。 但是,除非你確定你知道自己在做什么,否則我建議調整現有代碼而不是從頭開始,因為你可以破壞其他功能,因為TabExpansion功能會影響提示符下的所有選項卡完成,例如作為制表符完成命令或路徑。

添加更多細節:

每個PowerShell主機都會略微區別一些。 雖然PowerShell本身具有歷史緩沖區的概念,但每個環境中的向上/向下箭頭都使用自己的內部歷史記錄,而不是全局歷史記錄。 從理論上講,沒有理由微軟無法解決主機中處理歷史記錄的方式以引起注意(我會直接建議)。 不幸的是,這樣做會有幾年的變化,所以你現在有些困難。

在歷史上遇到了同樣的痛苦,我在IsePackV2中添加了一個冰柱來直觀地探索歷史。 只需按F7鍵,側欄窗格就會顯示真實的歷史記錄緩沖區。

在過去,我剛剛將每個會話的歷史記錄保存到一個唯一命名的歷史文件中。 然后我創建了一個配置文件函數,它接受了一個模式,然后在所有這些歷史文件中搜索匹配並打印出來的命令行。

它不像向上箭頭(F7)甚至Invoke-History或#get-chi那樣方便。 然而,它也不會讓我的創業陷入困境,加載歷史可能會隨着時間的推移而變得非常大。

在PowerShell 3或更高版本中,這可以在PSReadline的幫助下完成,您可以在這里閱讀。

此模塊完全符合您的要求 - 它將您的歷史記錄加載到其內部歷史記錄中,因此向上/向下箭頭與之前會話的歷史記錄一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM