Kayıt defteri anahtarları ile çalışma

Bu örnek yalnızca Windows platformları için geçerlidir.

Kayıt defteri anahtarları PowerShell sürücülerindeki öğeler olduğundan, bunlarla çalışmak dosya ve klasörlerle çalışmaya çok benzer. Önemli bir fark, kayıt defteri tabanlı Bir PowerShell sürücüsündeki her öğenin, aynı dosya sistemi sürücüsündeki bir klasör gibi bir kapsayıcı olmasıdır. Ancak, kayıt defteri girdileri ve bunların ilişkili değerleri ayrı öğeler değil öğelerin özellikleridir.

Kayıt defteri anahtarının tüm alt anahtarlarını listeleme

kullanarak Get-ChildItemtüm öğeleri doğrudan bir kayıt defteri anahtarı içinde gösterebilirsiniz. Gizli öğeleri veya sistem öğelerini görüntülemek için isteğe bağlı Force parametresini ekleyin. Örneğin, bu komut öğeleri doğrudan kayıt defteri kovanına HKEY_CURRENT_USER karşılık gelen PowerShell sürücüsü HKCU:içinde görüntüler:

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

Bunlar, Kayıt Defteri Düzenleyicisi'nde (regedit.exe ) altında HKEY_CURRENT_USER görünen en üst düzey anahtarlardır.

Ayrıca, kayıt defteri sağlayıcısının adını ve ardından ::öğesini belirterek bu kayıt defteri yolunu belirtebilirsiniz. Kayıt defteri sağlayıcısının tam adı şeklindedir Microsoft.PowerShell.Core\Registry, ancak bu yalnızca Registryolarak kısaltılabilir. Aşağıdaki komutlardan herhangi biri içeriği doğrudan altında HKCU:listeler.

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:

Bu komutlar, unix kabuğunda veya ls içinde cmd.exe kullanma DIR gibi yalnızca doğrudan kapsanan öğeleri listeler. Kapsanan öğeleri göstermek için Recurse parametresini belirtmeniz gerekir. içindeki HKCU:tüm kayıt defteri anahtarlarını listelemek için aşağıdaki komutu kullanın.

Get-ChildItem -Path HKCU:\ -Recurse

Get-ChildItemPath, Filter, Include ve Exclude parametreleri aracılığıyla karmaşık filtreleme özellikleri gerçekleştirebilir, ancak bu parametreler genellikle yalnızca adı temel alır. cmdlet'ini kullanarak Where-Object öğelerin diğer özelliklerine göre karmaşık filtreleme gerçekleştirebilirsiniz. Aşağıdaki komut, içinde HKCU:\Software birden fazla alt anahtarı olmayan ve tam olarak dört değere sahip olan tüm anahtarları bulur:

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

Anahtarları kopyalama

Kopyalama işlemi ile Copy-Itemyapılır. Aşağıdaki örnek, alt anahtarını HKLM:\SOFTWARE\Microsoft\Windows\ ve tüm özelliklerini öğesine HKCU:\kopyalarCurrentVersion.

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

Bu yeni anahtarı kayıt defteri düzenleyicisinde veya kullanarak Get-ChildItemincelerseniz, yeni konumda kapsanan alt anahtarların kopyalarının olmadığını fark etmiş olursunuz. Bir kapsayıcının tüm içeriğini kopyalamak için Recurse parametresini belirtmeniz gerekir. Yukarıdaki copy komutunu özyinelemeli hale getirmek için şu komutu kullanırsınız:

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

Dosya sistemi kopyalarını gerçekleştirmek için zaten mevcut olan diğer araçları kullanmaya devam edebilirsiniz. WScript.Shell ve WMI'nin StdRegProv sınıfı gibi kayıt defteri düzenlemeyi destekleyen , regedit.exeregini.exe, ve COM nesneleri gibi tüm kayıt defteri düzenleme araçları reg.exePowerShell'in içinden kullanılabilir.

Anahtar oluşturma

Kayıt defterinde yeni anahtarlar oluşturmak, dosya sisteminde yeni bir öğe oluşturmaktan daha kolaydır. Tüm kayıt defteri anahtarları kapsayıcı olduğundan, öğe türünü belirtmeniz gerekmez. Aşağıdakiler gibi açık bir yol sağlamanız gerekir:

New-Item -Path HKCU:\Software_DeleteMe

Anahtar belirtmek için sağlayıcı tabanlı bir yol da kullanabilirsiniz:

New-Item -Path Registry::HKCU\Software_DeleteMe

Anahtarları silme

Öğeleri silmek temelde tüm sağlayıcılar için aynıdır. Aşağıdaki komutlar öğeleri sessizce kaldırır:

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

Belirli bir anahtar altındaki tüm anahtarları kaldırma

kullanarak Remove-Itemkapsanan öğeleri kaldırabilirsiniz, ancak öğe başka bir şey içeriyorsa kaldırma işlemini onaylamanız istenir. Örneğin, oluşturduğumuz alt anahtarı silmeye HKCU:\CurrentVersion çalışırsak şunu görürüz:

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"):

İçerilen öğeleri sormadan silmek için Recurse parametresini belirtin:

Remove-Item -Path HKCU:\CurrentVersion -Recurse

Kendi içinde değil HKCU:\CurrentVersion de içindeki HKCU:\CurrentVersion tüm öğeleri kaldırmak istiyorsanız, bunun yerine şunları kullanabilirsiniz:

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