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-ChildItem
tü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 Registry
olarak 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-ChildItem
Path, 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-Item
yapı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-ChildItem
incelerseniz, 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.exe
regini.exe
, ve COM nesneleri gibi tüm kayıt defteri düzenleme araçları reg.exe
PowerShell'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-Item
kapsanan öğ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
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin