Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet gäller endast för Windows-plattformar.
Eftersom registernycklar är objekt på PowerShell-enheter är det mycket likt att arbeta med filer och mappar. En viktig skillnad är att varje objekt på en registerbaserad PowerShell-enhet är en container, precis som en mapp på en filsystemenhet. Registerposter och deras associerade värden är dock egenskaper för objekten, inte distinkta objekt.
Visa en lista över alla undernycklar i en registernyckel
Du kan visa alla objekt direkt i en registernyckel med hjälp av Get-ChildItem. Lägg till den valfria Force-parametern för att visa dolda objekt eller systemobjekt. Det här kommandot visar till exempel objekten direkt i PowerShell-enheten HKCU:, vilket motsvarar HKEY_CURRENT_USER registerdatafilen:
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
Det här är nycklarna på den översta nivån som visas under HKEY_CURRENT_USER i Registereditorn (regedit.exe).
Du kan också ange den här registersökvägen genom att ange registerproviderns namn följt av ::. Registerleverantörens fullständiga namn är Microsoft.PowerShell.Core\Registry, men detta kan förkortas till bara Registry. Något av följande kommandon visar innehållet direkt under 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:
Dessa kommandon visar bara de direkt inneslutna objekten, ungefär som att använda DIR i cmd.exe eller ls i ett UNIX-gränssnitt. Om du vill visa inneslutna objekt måste du ange parametern Recurse . Om du vill visa en lista över alla registernycklar i HKCU:använder du följande kommando.
Get-ChildItem -Path HKCU:\ -Recurse
Get-ChildItem kan utföra komplexa filtreringsfunktioner via parametrarna Path, Filter, Include och Exclude , men dessa parametrar baseras vanligtvis bara på namn. Du kan utföra komplex filtrering baserat på andra egenskaper för objekt med hjälp av cmdleten Where-Object .
Följande kommando hittar alla nycklar inom HKCU:\Software som inte har fler än en undernyckel och som också har exakt fyra värden:
Get-ChildItem -Path HKCU:\Software -Recurse |
Where-Object {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }
Kopiera nycklar
Kopieringen är klar med Copy-Item. I följande exempel kopieras undernyckeln CurrentVersion HKLM:\SOFTWARE\Microsoft\Windows\ för och alla dess egenskaper till HKCU:\.
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU:
Om du undersöker den här nya nyckeln i registereditorn eller med hjälp av Get-ChildItemmärker du att du inte har kopior av de inneslutna undernycklarna på den nya platsen. För att kunna kopiera allt innehåll i en container måste du ange parametern Recurse . Om du vill göra föregående kopieringskommando rekursivt använder du det här kommandot:
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU: -Recurse
Du kan fortfarande använda andra verktyg som du redan har tillgängliga för att utföra filsystemkopior. Alla verktyg för registerredigering, inklusive reg.exe, regini.exe, regedit.exeoch COM-objekt som stöder registerredigering, till exempel WScript.Shell och WMI:s StdRegProv-klass , kan användas inifrån PowerShell.
Skapa nycklar
Det är enklare att skapa nya nycklar i registret än att skapa ett nytt objekt i ett filsystem. Eftersom alla registernycklar är containrar behöver du inte ange objekttypen. Ange bara en explicit sökväg, till exempel:
New-Item -Path HKCU:\Software_DeleteMe
Du kan också använda en providerbaserad sökväg för att ange en nyckel:
New-Item -Path Registry::HKCU\Software_DeleteMe
Ta bort nycklar
Att ta bort objekt är i stort sett detsamma för alla leverantörer. Följande kommandon tar tyst bort objekt:
Remove-Item -Path HKCU:\Software_DeleteMe
Remove-Item -Path 'HKCU:\key with spaces in the name'
Ta bort alla nycklar under en specifik nyckel
Du kan ta bort inneslutna objekt med hjälp av Remove-Item, men du uppmanas att bekräfta borttagningen om objektet innehåller något annat. Om vi till exempel försöker ta bort undernyckeln HKCU:\CurrentVersion som vi skapade ser vi följande:
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"):
Om du vill ta bort inneslutna objekt utan att fråga anger du parametern Recurse :
Remove-Item -Path HKCU:\CurrentVersion -Recurse
Om du vill ta bort alla objekt inom HKCU:\CurrentVersion men inte HKCU:\CurrentVersion sig själv kan du i stället använda:
Remove-Item -Path HKCU:\CurrentVersion\* -Recurse