Megosztás a következőn keresztül:


Rendszerleírókulcsok kezelése

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

Az összes elemet közvetlenül a beállításkulcson belül jelenítheti meg a Get-ChildItemhasználatával. Adja hozzá az opcionális Force paramétert a rejtett vagy rendszer elemek megjelenítéséhez. Ez a parancs például közvetlenül a PowerShell-meghajtó HKCU:elemeit jeleníti meg, amely megfelel 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őben (regedit.exe) HKEY_CURRENT_USER alatt látható legfelső szintű kulcsok.

A regisztrációs elérési utat úgy is megadhatja, hogy először megadja a beállításjegyzék-szolgáltató nevét, majd a ::-t. A beállításjegyzék-szolgáltató teljes neve Microsoft.PowerShell.Core\Registry, illetve egyszerűen Registry-re rövidíthető. Az alábbi parancsok bármelyike közvetlenül a HKCU:alatt 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 ahhoz, mintha egy Unix shell-ben a DIRcmd.exe vagy ls parancsot használnánk. A tartalmazott elemek megjelenítéséhez meg kell adnia a Recurse paramétert. Az HKCU:összes beállításkulcsának listázásához használja az alábbi parancsot.

Get-ChildItem -Path HKCU:\ -Recurse

Get-ChildItem összetett szűrési képességeket nyújthat a Elérési út, Szűrő, Inklúzióés Kizárás paraméterek révén, de ezek a paraméterek általában csak a név szerint működnek. A Where-Object parancsmaggal összetett szűrést végezhet az elemek egyéb tulajdonságai alapján. A következő parancs megkeresi HKCU:\Software összes olyan kulcsát, 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 Copy-Item-tal történik. Az alábbi példa bemutatja, hogyan másoljuk a CurrentVersion alkulcsot a HKLM:\SOFTWARE\Microsoft\Windows\-ből és annak minden tulajdonságát a HKCU:\-be.

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

Ha megvizsgálja ezt az új kulcsot a beállításszerkesztőben, vagy Get-ChildItemhasznál, láthatja, hogy az új helyen nincsenek másolatok 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 PowerShellben használható bármilyen beállításjegyzék-szerkesztő eszköz, beleértve a reg.exe-t, regini.exe-t, regedit.exe-t, valamint a beállításjegyzék-szerkesztést támogató COM-objektumokat, mint például a WScript.Shell és a WMI StdRegProv osztály.

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óként működik, nem szükséges megadni 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 a Remove-Itemhasználatával távolíthatja el, de a rendszer kérni fogja, hogy erősítse meg az eltávolítást, ha az elem tartalmaz bármi mást. Ha például megpróbáljuk törölni a létrehozott HKCU:\CurrentVersion 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 el szeretné távolítani HKCU:\CurrentVersion belül, de nem HKCU:\CurrentVersion magát, használhatja a következőt:

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