Kayıt Defteri Anahtarları ile Çalışma
Kayıt defteri anahtarları PowerShell sürücülerindeki öğeler olduğundan, bunlarla çalışmak dosya ve klasörlerle çalışmaya çok benzer. Kritik bir farklılık, kayıt defteri tabanlı bir PowerShell sürücüsündeki her öğenin bir dosya sistemi sürücüsündeki bir klasörde olduğu gibi bir kapsayıcı olduğu bir kapsayıcıdır. Bununla birlikte, kayıt defteri girişleri ve ilişkili değerleri, öğelerin ayrı öğeler değil, özellikleri olan özelliklerdir.
Bir kayıt defteri anahtarının tüm alt anahtarlarını listeleme
Kullanarak, tüm öğeleri doğrudan bir kayıt defteri anahtarı içinde gösterebilirsiniz Get-ChildItem . Gizli veya sistem öğelerini göstermek için isteğe bağlı zorlama parametresini ekleyin. Örneğin, bu komut, HKCU: HKEY_CURRENT_USER kayıt defteri kovanına karşılık gelen öğeleri doğrudan PowerShell sürücüsü 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, HKEY_CURRENT_USER kayıt defteri Düzenleyicisi () altında görünür olan en üst düzey anahtarlardır regedit.exe .
Bu kayıt defteri yolunu, kayıt defteri sağlayıcısının adını belirterek ve sonra da belirtebilirsiniz :: . Kayıt defteri sağlayıcısının tam adı, Microsoft.PowerShell.Core\Registry ancak bu yalnızca ' a kısaltılarak yapılabilir Registry . Aşağıdaki komutlardan herhangi biri, içerikleri doğrudan altında listeler 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:
bu komutlar, DIR Cmd.exe veya UNIX kabuğu gibi yalnızca doğrudan içerilen öğeleri listeler ls . İçerilen öğeleri göstermek için Recurse parametresini belirtmeniz gerekir. İçindeki tüm kayıt defteri anahtarlarını listelemek için HKCU: aşağıdaki komutu kullanın.
Get-ChildItem -Path HKCU:\ -Recurse
Get-ChildItem , kendi yolu, filtresi, içerme ve dışlama parametreleri aracılığıyla karmaşık filtreleme özellikleri gerçekleştirebilir, ancak bu parametreler genellikle yalnızca adı temel alır. Cmdlet 'ini kullanarak, öğelerin diğer özelliklerine göre karmaşık filtreleme gerçekleştirebilirsiniz Where-Object . Aşağıdaki komut, içindeki birden HKCU:\Software fazla alt anahtar içermeyen ve ayrıca tam 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 kopyalanıyor
Kopyalama işlemi ile yapılır Copy-Item . Aşağıdaki örnek, CurrentVersion öğesinin alt anahtarını HKLM:\SOFTWARE\Microsoft\Windows\ ve tüm özelliklerini ' a kopyalar HKCU:\ .
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU:
Bu yeni anahtarı kayıt defteri düzenleyicisinde veya kullanarak incelerseniz Get-ChildItem , yeni konumda kapsanan alt anahtarların kopyalarının olmadığını fark edersiniz. Bir kapsayıcının tüm içeriğini kopyalamak için Recurse parametresini belirtmeniz gerekir. Önceki kopyalama komutunu özyinelemeli yapmak 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. reg.exe regini.exe regedit.exe WScript. Shell ve wmı 'nin stdregprov sınıfı gibi kayıt defteri düzenlemesini destekleyen COM nesneleri dahil olmak üzere tüm kayıt defteri düzenlemesi araçları, Windows PowerShell içinden kullanılabilir.
Anahtar oluşturma
Kayıt defterinde yeni anahtarlar oluşturmak, bir dosya sisteminde yeni bir öğe oluşturmaktan daha basittir. Tüm kayıt defteri anahtarları kapsayıcılar olduğundan, öğe türünü belirtmeniz gerekmez; yalnızca bir açık yol sağlarsınız, örneğin:
New-Item -Path HKCU:\Software_DeleteMe
Bir anahtar belirtmek için sağlayıcı tabanlı bir yol da kullanabilirsiniz:
New-Item -Path Registry::HKCU\Software_DeleteMe
Anahtarlar siliniyor
Öğelerin silinmesi, tüm sağlayıcılar için temelde aynıdır. Aşağıdaki komutlar öğeleri sessizce kaldıracaktı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ırılıyor
İçerilen öğeleri kullanarak kaldırabilirsiniz Remove-Item , ancak öğe başka bir şey içeriyorsa kaldırma işlemini onaylamanız istenir. Örneğin, HKCU:\CurrentVersion oluşturduğumuz alt anahtarı silmeye çalışdığımız şu şekilde görüyoruz:
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
İçindeki tüm öğeleri kaldırmak isterseniz HKCU:\CurrentVersion HKCU:\CurrentVersion , bunun yerine şunu kullanabilirsiniz:
Remove-Item -Path HKCU:\CurrentVersion\* -Recurse