Categories: PowerShell

PowerShell 指令歷史紀錄使用教學

介紹 PowerShell 的指令歷史記錄使用方法,可快速查詢並執行用過的指令,節省打字時間。

在 Windows 的 PowerShell 中,有兩種不同的指令歷史記錄功能,一種是由 Windows PowerShell 終端機(GUI 圖形介面)所提供的「命令歷程記錄」,另外一種則是由 PowerShell 本身所提供的指令歷史記錄,以下是這兩種歷史記錄功能的使用方式。

命令歷程記錄

「命令歷程記錄」是只有在 Windows PowerShell 終端機中才有的功能,在其他的 PowerShell 環境下就不一定能使用。

方向鍵

「向上」與「向下」兩個方向鍵可以用來查看過去執行的指令,按「向上」鍵可以往前查看,而「向下」鍵則是往後查看,這應該是大家都已經熟知的用法。

F8 搜尋指令歷史記錄

F8 鍵可以讓我們在指令歷史記錄中,搜尋指定關鍵字開頭的指令,例如要找 pi 開頭的指令,可以在 PowerShell 視窗中輸入 pi 之後,再按下 F8 鍵往前搜尋,若有符合的指令記錄,就會自動顯示在指令列中。

F8 搜尋指令歷史記錄

如果過去執行的指令中,有好多個符合的指令,我們可以多按幾下 F8 鍵,尋找我們要的指令。

緩衝區大小與數目

Windows PowerShell 終端機的命令歷程記錄都是放在緩衝區之中,預設的緩衝區大小是 50(也就是可以儲存 50 筆指令記錄),若要改變這個設定,可以從「內容」設定中更改。
Step 1
在 Windows PowerShell 終端機標題列上,點選滑鼠右鍵,選擇「內容」。

Windows PowerShell 內容

Step 2
在「命令歷程記錄」區塊中,可以調整緩衝區大小與數目。緩衝區大小是指可以儲存的指令筆數,緩衝區數目是指可以同時讓多少個獨立的 Windows PowerShell 終端機儲存各自的命令歷程記錄。

Windows PowerShell 內容

PowerShell 指令歷史記錄

PowerShell 本身也會自動記錄使用者執行過的指令。

查閱 PowerShell 指令歷史記錄

若要查閱 PowerShell 內部的指令歷史記錄,可以使用 Get-History 這個指令:

# 查閱指令歷史記錄
Get-History

查閱指令歷史記錄

Get-History 預設只會顯示最後執行的 32 筆指令,若要顯示更多筆,可以使用 -Count 參數指定顯示指令的筆數:

Get-History -Count 100

搜尋 PowerShell 指令歷史記錄

如果要在 PowerShell 指令歷史記錄中,以關鍵字來搜尋想要用的指令,可以將 Get-History 的輸出導給 Select-String 進行篩選,例如若要搜尋含有 ping 關鍵字的指令,可以執行:

Get-History |  Select-String -Pattern "ping"
搜尋 PowerShell 指令歷史記錄

顯示指令詳細記錄

PowerShell 的指令紀錄除了指令的內容之外,還有包含指令執行的時間點與執行結果,若要查看詳細的記錄,可以配合 Format-List 輸出詳細的資訊:

Get-History | Format-List -Property *
顯示指令詳細記錄

執行指令歷史記錄

在查詢到想要使用的歷史指令之後,可以使用 Invoke-History 加上歷史指令的編號,即可直接執行該指令。例如若想要執行編號 4 的歷史指令,可以執行:

Invoke-History 4
執行指令歷史記錄

清除指令歷史記錄

若要清除 PowerShell 內部的指令歷史記錄,可以執行 Clear-History 指令:

Clear-History
清除指令歷史記錄

匯出與匯入指令歷史記錄

若要將 PowerShell 的指令歷史記錄匯出成 XML 檔案,可以執行:

# 將指令歷史紀錄匯出為 XML 檔案
Get-History | Export-Clixml -Path D:my_commands.xml

若要從 XML 檔案中匯入 PowerShell 的指令歷史紀錄,可以執行:

# 從 XML 檔案匯入指令歷史紀錄 
Add-History -InputObject (Import-Clixml -Path D:my_commands.xml)

歷史記錄儲存位置

如果想知道 PowerShell 儲存歷史記錄的檔案位置,可以使用 Get-PSReadlineOption 指令:

# 歷史記錄儲存位置
(Get-PSReadlineOption).HistorySavePath

我們可以直接用記事本開啟這個檔案,查看所有被儲存下來的歷史紀錄:

# 開啟歷史記錄儲存位置
notepad (Get-PSReadlineOption).HistorySavePath

參考資料:HTGStephanos Constantinou BlogStackOverflowTechNet

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago