在本文中,了解如何使用PowerShell获取注册表值并使用多种方法查询注册表条目。
让我们开始吧!
先决条件
本文中的所有示例都将使用PowerShell 7.1进行演示,这是本文发布时的最新版本。您也可以选择使用Windows PowerShell 5.1。您还应该对PowerShell驱动器
具有一些基本的了解。某些示例可能需要管理员权限才能正常工作。
使用Get-ChildItem
获取注册表键和值
查找注册表键和值的最简单方法之一是使用Get-ChildItem
cmdlet。这使用PowerShell通过枚举PowerShell驱动器中的项来获取注册表值等。在这种情况下,PowerShell驱动器是通过运行Get-PSDrive
找到的HKLM驱动器。
在PowerShell控制台中运行以下命令。
在下面的屏幕截图中,您可以看到:
- WindowsUpdate注册表键的完整键路径
- 键AU
- 具有相应值的AU键的注册表条目列表

關於上面的屏幕截圖,有一個小問題需要注意。您可能會注意到輸出結果有點誤導。通常,PowerShell控制台輸出表示對象的屬性。在這種情況下,Get-ChildItem
的行為略有不同,因為該對象在技術上沒有屬性。背景中運行了額外的命令來生成您看到的顯示格式。
使用Get-ItemProperty
獲取註冊表值
繼續使用之前的註冊表鍵,這次讓我們使用Get-ItemProperty
cmdlet並使輸出更可讀。
使用Get-ItemProperty
最適合獲取註冊表中的項目屬性,獲取鍵和它們的值。運行以下命令:
在下面的屏幕截圖中,您可以看到鍵和值的列表:
- 對於註冊表容器AU
- PowerShell相關的屬性,所有這些屬性都以PS開頭

作為替代,您還可以通過使用.NET來指定註冊表項目路徑以獲得相同的輸出,只是稍微快一點。下面的命令使用了.NET 註冊表類在PowerShell中獲取註冊表值:
使用Get-ItemPropertyValue
獲取註冊表值
現在是時候看一下關鍵值了。使用與之前相同的註冊表容器,使用 Get-ItemPropertyValue
命令,讓我們來查看鍵 NoAutoUpdate
的值。執行以下 PowerShell 命令:
使用 Get-ItemPropertyValue
,您將獲得更簡潔的輸出,僅顯示值,而不是之前看到的其他信息。

在不使用 PowerShell 驅動器的情況下查詢註冊表
在本教程中,您一直在使用 PowerShell 驅動器來處理註冊表。這種方法並不是唯一的方法;您還可以利用 .NET 並通過 .NET 類獲取註冊表信息!
例如,也許您需要使用 PowerShell 在遠程計算機上獲取 HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ : AutoUpate 的註冊表值。
您可以通過以下步驟使用 .NET:
- 在遠程計算機上打開註冊表連接。
2. 打開您要查找的特定註冊表鍵。
3. 使用 GetValue()
方法查詢註冊表鍵內的註冊表值。
與 PowerShell 驅動器相比,使用 .NET 速度更快,並且是連接和使用 PowerShell 在遠程計算機上查詢註冊表鍵和值的簡單方法。
使用 Test-Path
測試註冊表值
有時您只需要驗證註冊表值是否存在。您可以使用 Test-Path
命令來完成這一點。
繼續使用WindowsUpdate容器,執行以下PowerShell命令來測試AU容器是否存在:
如果結果為True,則表示該鍵或容器存在。但如果您需要測試值或項目是否存在呢?讓我們建立一個自定義函數來進行此測試:
使用這個自定義函數,您輸入鍵或容器的路徑和名稱,以及您要查找的值,自定義函數將返回True或False(如下面的屏幕截圖所示):

下一步
請注意,您可以使用PowerShell中的Get-ChildItem
、Get-ItemProperty
和Get-ItemPropertyValue
來獲取註冊表值和鍵,還可以做什麼呢?
如果您想要了解有關使用PowerShell使用註冊表的更多信息,請參閱Microsoft Docs中的文章《Working with Registry Keys》。您還可以在ATA博客文章《Using Active Setup: How to Set a Registry Value in All Users Hives》中找到設置註冊表值的出色示範。
Source:
https://adamtheautomator.com/powershell-to-get-a-registry-value/