使用登錄機碼

此範例僅適用於 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 殼層中使用 cmd.exels 一樣DIR。 若要顯示自主專案,您必須指定 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來完成。 下列範例會將 CurrentVersionHKLM:\SOFTWARE\Microsoft\Windows\ 子機碼及其所有屬性 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