使用 PowerShell 獲取登錄檔鍵的值

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 什麼是登錄檔鍵
  2. 在 PowerShell 中備份登錄檔鍵
  3. 在 PowerShell 中使用 Get-ItemProperty Cmdlet 獲取登錄檔鍵的值
  4. 在 PowerShell 中使用 Get-ItemPropertyValue Cmdlet 獲取登錄檔鍵的值
使用 PowerShell 獲取登錄檔鍵的值

在某些情況下,修復錯誤、調整 Windows 功能或完全解除安裝軟體或產品需要你編輯 Windows 登錄檔。

雖然使用登錄檔編輯器可能很方便,但如果我們不夠小心,仍然可能會出現錯誤。編輯登錄檔是非常微妙的,你的本地系統依賴於它。

本文將向你展示如何使用 Windows PowerShell 安全地獲取登錄檔鍵值。

什麼是登錄檔鍵

登錄檔鍵有點像結構化的資料夾,但它只存在於 Windows 登錄檔中。

此外,登錄檔鍵也可能包含登錄檔值,就像資料夾包含檔案一樣。登錄檔鍵還可以包括其他登錄檔鍵,通常稱為子項。

如前所述,Windows 登錄檔是結構化的,最頂層的登錄檔鍵稱為登錄檔配置單元。這些被認為是具有特殊許可權的特殊登錄檔鍵,但它們仍然具有與標準登錄檔鍵相同的基本功能。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft

如果我們以上面的例子為例,HKEY_LOCAL_MACHINE 或簡稱 HKLM 是登錄檔路徑的頂部。SOFTWARE 登錄檔鍵隨後接替它,並且如前所述,登錄檔鍵中可以包含更多項,我們稱之為子項,例如 Microsoft

在 PowerShell 中備份登錄檔鍵

在我們進行任何更改之前備份我們的登錄檔是明智的。如前所述,登錄檔中的任何意外更改都可能導致你的檔案、軟體甚至整個作業系統出現錯誤。

但是,使用你正在更改的金鑰的副本,你可以放心地知道你可以恢復任何可能導致作業系統出現問題的更改。

我們可能會使用舊命令 reg export 來快速備份你的登錄檔。例如,下面的語法將備份整個 HKLM 登錄檔。

reg export HKLM C:\RegBack\HKLM.Reg /y

你備份的登錄檔鍵將以 .REG 檔案格式匯出。因此,你可以通過雙擊登錄檔檔案並按照提示快速恢復備份的登錄檔鍵。

在 PowerShell 中使用 Get-ItemProperty Cmdlet 獲取登錄檔鍵的值

Get-ItemProperty 是一個 PowerShell cmdlet,用於以比其相關命令 Get-Item 更易讀的格式返回登錄檔鍵。我們還可以使用 Get-ItemProperty cmdlet 獲取特定登錄檔鍵的值。

示例程式碼:

$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"

Get-ItemProperty -Path $registryPath -Name ProgramFilesDir

輸出:

ProgramFilesDir : C:\Program Files
PSPath          : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micr
                  osoft\Windows\CurrentVersion
PSParentPath    : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micr
                  osoft\Windows
PSChildName     : CurrentVersion
PSDrive         : HKLM
PSProvider      : Microsoft.PowerShell.Core\Registry
注意
請務必將登錄檔路徑用雙引號 ("") 括起來,因為某些登錄檔路徑中有空格。將路徑括在雙引號中將採用所述路徑的文字表達,並且不會導致錯誤。

該命令建立一個具有 PsPathPsParentPathPsChildnamePSDrivePSProvider 和另一個以鍵值名稱命名的屬性的 PSCustomObject 物件。

因此,要僅輸出登錄檔鍵的實際值,我們可以在指令碼中呼叫鍵值名稱屬性。

示例程式碼:

$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"

$keyValue = Get-ItemProperty -Path $registryPath -Name ProgramFilesDir

$keyValue.ProgramFilesDir

輸出:

C:\Program Files

命令 Get-ItemProperty 適用於 PowerShell 版本 2 到 5。但是,在 Windows PowerShell 5 中,Microsoft 引入了一個新的 cmdlet,使在命令列中列印登錄檔鍵變得更加簡單。

在 PowerShell 中使用 Get-ItemPropertyValue Cmdlet 獲取登錄檔鍵的值

如前所述,Windows PowerShell 版本 5 中引入了 Get-ItemPropertyValue cmdlet,以解決以更短、更直接的方式獲取登錄檔鍵值的查詢。

cmdlet 只需要兩個引數即可工作:登錄檔檔案路徑和需要查詢值的登錄檔鍵。

示例程式碼:

Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' 'ProgramFilesDir'

輸出:

C:\Program Files
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相關文章 - PowerShell Registry