共用方式為


使用登錄機碼

此範例僅適用於 Windows 平臺。

因為登錄機碼是PowerShell磁碟驅動器上的專案,因此使用它們與使用檔案和資料夾非常類似。 其中一個重要差異是,登錄型 PowerShell 磁碟驅動器上的每個專案都是容器,就像文件系統磁碟驅動器上的資料夾一樣。 不過,登錄專案及其相關聯的值是專案的屬性,而不是相異的專案。

列出登錄機碼的所有子機碼

您可以使用 Get-ChildItem 直接在登錄機碼內顯示所有項目。 新增可選的 Force 參數以顯示隱藏或系統項目。 例如,此命令會直接在PowerShell磁碟驅動器 HKCU:內顯示專案,其對應至 HKEY_CURRENT_USER 登錄區:

Get-ChildItem -Path HKCU:\ | Select-Object Name
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER

Name
----
HKEY_CURRENT_USER\AppEvents
HKEY_CURRENT_USER\Console
HKEY_CURRENT_USER\Control Panel
HKEY_CURRENT_USER\DirectShow
HKEY_CURRENT_USER\dummy
HKEY_CURRENT_USER\Environment
HKEY_CURRENT_USER\EUDC
HKEY_CURRENT_USER\Keyboard Layout
HKEY_CURRENT_USER\MediaFoundation
HKEY_CURRENT_USER\Microsoft
HKEY_CURRENT_USER\Network
HKEY_CURRENT_USER\Printers
HKEY_CURRENT_USER\Software
HKEY_CURRENT_USER\System
HKEY_CURRENT_USER\Uninstall
HKEY_CURRENT_USER\WXP
HKEY_CURRENT_USER\Volatile Environment

這些是在登錄編輯器 (regedit.exe)中可見的HKEY_CURRENT_USER下的最上層機碼。

您也可以指定登錄提供者的名稱,後面接著 ::,以指定此登錄路徑。 登錄提供者的完整名稱是 Microsoft.PowerShell.Core\Registry,但可以縮短為 。Registry 下列任何命令都會直接列出 下 HKCU:的內容。

Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKCU
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKCU
Get-ChildItem HKCU:

這些命令只會列出直接包含的專案,就像在 Unix 殼層中使用 DIR 或是使用 cmd.exels 一樣。 若要顯示包含的項目,您必須指定 Recurse 參數。 若要列出 中的所有 HKCU:登錄機碼,請使用下列命令。

Get-ChildItem -Path HKCU:\ -Recurse

Get-ChildItem 可以透過 其PathFilterIncludeExclude 參數執行複雜的篩選功能,但這些參數通常只以名稱為基礎。 您可以使用 Cmdlet,根據專案 Where-Object 的其他屬性執行複雜的篩選。 下列命令會在 HKCU:\Software 中尋找所有僅有一個或更少子金鑰且恰好有四個值的鍵:

Get-ChildItem -Path HKCU:\Software -Recurse |
    Where-Object {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }

複製金鑰

複製會使用 Copy-Item來完成。 下列範例會將 HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion 子機碼及其所有屬性複製到 HKCU:\

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU:

如果您在登錄編輯器中或使用 Get-ChildItem 檢查這個新機碼,您會發現新位置中沒有包含子機碼的副本。 若要複製容器的所有內容,您必須指定 Recurse 參數。 若要讓上述複製命令遞歸,您可以使用此命令:

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU: -Recurse

您仍然可以使用其他工具來執行檔案系統複本。 任何登錄編輯工具,包括 reg.exe支援登錄編輯的 、 regini.exeregedit.exe和 COM 物件,例如 WScript.Shell 和 WMI 的 StdRegProv 類別,都可以從 PowerShell 內使用。

建立金鑰

在註冊表中建立新機碼比在文件系統中建立新項目更簡單。 由於所有登錄機碼都是容器,因此您不需要指定項目類型。 只要提供明確的路徑,例如:

New-Item -Path HKCU:\Software_DeleteMe

您也可以使用提供者型路徑來指定金鑰:

New-Item -Path Registry::HKCU\Software_DeleteMe

刪除金鑰

刪除項目對所有提供者來說都是一樣的。 下列命令會靜默移除項目:

Remove-Item -Path HKCU:\Software_DeleteMe
Remove-Item -Path 'HKCU:\key with spaces in the name'

移除特定鍵下的所有鍵

您可以使用 Remove-Item移除包含的專案,但是如果專案包含任何其他項目,系統會提示您確認移除。 例如,如果我們嘗試刪除我們建立的 HKCU:\CurrentVersion 子機碼,我們會看到:

Remove-Item -Path HKCU:\CurrentVersion
Confirm
The item at HKCU:\CurrentVersion\AdminDebug has children and the Recurse
parameter was not specified. If you continue, all children will be removed with
the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

若要刪除包含的項目而不提示,請指定 Recurse 參數:

Remove-Item -Path HKCU:\CurrentVersion -Recurse

如果您想要移除內 HKCU:\CurrentVersion 的所有專案,但不是 HKCU:\CurrentVersion 本身,您可以改用:

Remove-Item -Path HKCU:\CurrentVersion\* -Recurse