使用登錄機碼
此範例僅適用於 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.exe
或 ls
一樣DIR
。 若要顯示自主專案,您必須指定 Recurse 參數。 若要列出 中的所有 HKCU:
登錄機碼,請使用下列命令。
Get-ChildItem -Path HKCU:\ -Recurse
Get-ChildItem
可以透過其 Path、 Filter、 Include和 Exclude 參數執行複雜的篩選功能,但這些參數通常只以名稱為基礎。 您可以使用 Cmdlet,根據專案 Where-Object
的其他屬性執行複雜的篩選。
下列命令會尋找內沒有一個以上的子機碼且只有四個值的所有索引 HKCU:\Software
鍵:
Get-ChildItem -Path HKCU:\Software -Recurse |
Where-Object {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }
複製金鑰
複製是使用 Copy-Item
來完成。 下列範例會將 CurrentVersion
的 HKLM:\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.exe
、 regedit.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