Beállításkulcsok használata

Ez a minta csak Windows-platformokra vonatkozik.

Mivel a beállításkulcsok a PowerShell-meghajtók elemei, a velük végzett munka nagyon hasonló a fájlok és mappák használatához. Az egyik kritikus különbség, hogy a beállításjegyzék-alapú PowerShell-meghajtók minden eleme tároló, ugyanúgy, mint egy fájlrendszer-meghajtón lévő mappa. A beállításjegyzék-bejegyzések és a hozzájuk tartozó értékek azonban az elemek tulajdonságai, nem pedig a különálló elemek.

Beállításkulcs összes alkulcsának felsorolása

A beállításkulcson belül az összes elemet megjelenítheti közvetlenül a beállításkulcs használatával Get-ChildItem. Adja hozzá az opcionális Force paramétert a rejtett vagy rendszerelemek megjelenítéséhez. Ez a parancs például közvetlenül a PowerShell-meghajtón HKCU:belül jeleníti meg az elemeket, amelyek megfelelnek a HKEY_CURRENT_USER beállításjegyzék-hive-nek:

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

Ezek a beállításszerkesztő (regedit.exe) alatt HKEY_CURRENT_USER látható legfelső szintű kulcsok.

Ezt a beállításjegyzék-elérési utat a beállításjegyzék-szolgáltató nevének megadásával is megadhatja, majd a következővel ::: . A beállításjegyzék-szolgáltató teljes neve Microsoft.PowerShell.Core\Registry, de ez egyszerűen Registrylerövidíthető. Az alábbi parancsok bármelyike közvetlenül a következő alatt HKCU:listázhatja a tartalmat.

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:

Ezek a parancsok csak a közvetlenül tartalmazott elemeket sorolják fel, hasonlóan a UNIX-rendszerhéjban cmd.exe való ls használathozDIR. A tartalmazott elemek megjelenítéséhez meg kell adnia a Recurse paramétert . Az összes beállításkulcs HKCU:listázásához használja az alábbi parancsot.

Get-ChildItem -Path HKCU:\ -Recurse

Get-ChildItemÖsszetett szűrési képességeket végezhet az Elérési út, Szűrés, Belefoglalás és Kizárás paramétereken keresztül, de ezek a paraméterek általában csak a név alapján vannak megadva. A parancsmaggal Where-Object összetett szűrést végezhet az elemek egyéb tulajdonságai alapján. Az alábbi parancs megkeresi az összes olyan kulcsot HKCU:\Software , amely nem tartalmaz egynél több alkulcsot, és pontosan négy értékkel is rendelkezik:

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

Kulcsok másolása

A másolás a művelettel Copy-Itemtörténik. Az alábbi példa az CurrentVersion alkulcsot HKLM:\SOFTWARE\Microsoft\Windows\ és annak összes tulajdonságát a következőre HKCU:\másolja:

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

Ha a beállításszerkesztőben vagy a beállításszerkesztőben Get-ChildItemvizsgálja meg ezt az új kulcsot, észreveheti, hogy az új helyen nem található másolat a tartalmazott alkulcsokról. A tároló teljes tartalmának másolásához meg kell adnia a Recurse paramétert . Az előző másolási parancs rekurzívvá alakításához használja a következő parancsot:

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

A fájlrendszer-másolatok végrehajtásához továbbra is használhat más, már elérhető eszközöket. A Beállításjegyzék szerkesztését támogató beállításjegyzék-szerkesztőeszközök ( például reg.exeregedit.exeregini.exea WScript.Shell és a WMI StdRegProv osztálya) a PowerShellben használhatók.

Kulcsok létrehozása

Az új kulcsok létrehozása a beállításjegyzékben egyszerűbb, mint egy új elem létrehozása a fájlrendszerben. Mivel minden beállításkulcs tároló, nem kell megadnia az elem típusát. Csak adjon meg egy explicit útvonalat, például:

New-Item -Path HKCU:\Software_DeleteMe

A kulcs megadásához szolgáltatóalapú elérési út is használható:

New-Item -Path Registry::HKCU\Software_DeleteMe

Kulcsok törlése

Az elemek törlése lényegében minden szolgáltató esetében ugyanaz. Az alábbi parancsok csendben eltávolítják az elemeket:

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

Az összes kulcs eltávolítása egy adott kulcs alatt

A tartalmazott elemeket eltávolíthatja a használatával Remove-Item, de a rendszer kérni fogja, hogy erősítse meg az eltávolítást, ha az elem tartalmaz-e bármi mást. Ha például megpróbáljuk törölni a HKCU:\CurrentVersion létrehozott alkulcsot, a következőt látjuk:

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

Ha a tartalmazott elemeket kérés nélkül szeretné törölni, adja meg a Recurse paramétert :

Remove-Item -Path HKCU:\CurrentVersion -Recurse

Ha az összes elemet HKCU:\CurrentVersion el szeretné távolítani, de önmagában nem HKCU:\CurrentVersion , a következőt használhatja:

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