about_Registry_Provider
Providernamn
Register
Enheter
HKLM:
, HKCU:
Funktioner
ShouldProcess, UseTransactions
Kort beskrivning
Ger åtkomst till registernycklar, poster och värden i PowerShell.
Detaljerad beskrivning
Den här informationen gäller endast för PowerShell som körs i Windows.
Med PowerShell-registerprovidern kan du hämta, lägga till, ändra, rensa och ta bort registernycklar, poster och värden i PowerShell.
Registerenheterna är ett hierarkiskt namnområde som innehåller registernycklarna och undernycklarna på datorn. Registerposter och värden är inte komponenter i den hierarkin. I stället är de egenskaper för var och en av nycklarna.
Registerprovidern stöder följande cmdletar, som beskrivs i den här artikeln.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Remove-ItemProperty
- Clear-ItemProperty
- Get-Acl
- Set-Acl
Typer som exponeras av den här providern
Registernycklar representeras som instanser av klassen Microsoft.Win32.RegistryKey . Registerposter representeras som instanser av klassen PSCustomObject .
Navigera i registerenheterna
Registerprovidern exponerar sitt datalager som två standardenheter. Registerplatsen HKEY_LOCAL_MACHINE mappas till HKLM:
enheten och HKEY_CURRENT_USER mappas till HKCU:
enheten. Om du vill arbeta med registret kan du ändra din plats till HKLM:
enheten med hjälp av följande kommando.
Set-Location HKLM:
Om du vill återgå till en filsystemenhet skriver du namnet på enheten. Skriv till exempel:
Set-Location C:
Du kan också arbeta med registerprovidern från andra PowerShell-enheter. Om du vill referera till en registernyckel från en annan plats använder du enhetsnamnet (HKLM:
, HKCU:
) i sökvägen. Använd ett omvänt snedstreck (\
) eller ett snedstreck (/
) för att ange en nivå på registerenheten .
PS C:\> cd HKLM:\Software
Anteckning
PowerShell använder alias för att ge dig ett välbekant sätt att arbeta med providersökvägar. Kommandon som dir
och ls
är nu alias för Get-ChildItem, cd
är ett alias för Set-Location och pwd
är ett alias för Get-Location.
I det sista exemplet visas en annan sökvägssyntax som du kan använda för att navigera i registerprovidern. Den här syntaxen använder providernamnet följt av två kolon ::
. Med den här syntaxen kan du använda det fullständiga HIVE-namnet i stället för det mappade enhetsnamnet HKLM
.
cd "Registry::HKEY_LOCAL_MACHINE\Software"
Visa innehållet i registernycklar
Registret är indelat i nycklar, undernycklar och poster. Mer information om registerstrukturen finns i Registrets struktur.
På en registerenhet är varje nyckel en container. En nyckel kan innehålla valfritt antal nycklar. En registernyckel som har en överordnad nyckel kallas för en undernyckel. Du kan använda Get-ChildItem
för att visa registernycklar och Set-Location
för att navigera till en nyckelsökväg.
Registervärden är attribut för en registernyckel. På registerenheten kallas de objektegenskaper. En registernyckel kan ha både underordnade nycklar och objektegenskaper.
I det här exemplet visas skillnaden mellan Get-Item
och Get-ChildItem
. När du använder Get-Item
registernyckeln "Spooler" kan du visa dess egenskaper.
Get-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Name Property
---- --------
Spooler DependOnService : {RPCSS, http}
Description : @%systemroot%\system32\spoolsv.exe,-2
DisplayName : @%systemroot%\system32\spoolsv.exe,-1
ErrorControl : 1
FailureActions : {16, 14, 0, 0...}
Group : SpoolerGroup
ImagePath : C:\WINDOWS\System32\spoolsv.exe
ObjectName : LocalSystem
RequiredPrivileges : {SeTcbPrivilege, SeImpersonatePrivilege, ...
ServiceSidType : 1
Start : 2
Type : 27
Varje registernyckel kan också ha undernycklar. När du använder Get-Item
på en registernyckel visas inte undernycklarna. Cmdleten Get-ChildItem
visar underordnade objekt i "Spooler"-nyckeln, inklusive egenskaperna för varje undernyckel. Egenskaperna för överordnade nycklar visas inte när du använder Get-ChildItem
.
Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler
Name Property
---- --------
Performance Close : PerfClose
Collect : PerfCollect
Collect Timeout : 2000
Library : C:\Windows\System32\winspool.drv
Object List : 1450
Open : PerfOpen
Open Timeout : 4000
Security Security : {1, 0, 20, 128...}
Cmdleten Get-Item
kan också användas på den aktuella platsen. I följande exempel navigerar du till registernyckeln "Spooler" och hämtar objektegenskaperna.
Punkten .
används för att ange den aktuella platsen.
cd HKLM:\System\CurrentControlSet\Services\Spooler
Get-Item .
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Name Property
---- --------
Spooler DependOnService : {RPCSS, http}
Description : @%systemroot%\system32\spoolsv.exe,-2
...
Mer information om de cmdletar som beskrivs i det här avsnittet finns i följande artiklar.
Visa registernyckelvärden
Registernyckelvärden lagras som egenskaper för varje registernyckel. Cmdleten Get-ItemProperty
visar registernyckelegenskaper med det namn som du anger. Resultatet är ett PSCustomObject som innehåller de egenskaper som du anger.
I följande exempel används cmdleten Get-ItemProperty
för att visa alla egenskaper. Om du lagrar det resulterande objektet i en variabel kan du komma åt det önskade egenskapsvärdet.
$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http
Om du anger ett värde för parametern -Name
väljer du de egenskaper som du anger och returnerar PSCustomObject. I följande exempel visas skillnaden i utdata när du använder parametern -Name
.
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem
BUILD : 17134.1
Installation Directory : C:\WINDOWS\system32\WBEM
MOF Self-Install Directory : C:\WINDOWS\system32\WBEM\MOF
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : Wbem
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
BUILD : 17134.1
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : Wbem
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
Från och med PowerShell 5.0 returnerar cmdleten Get-ItemPropertyValue
endast värdet för den egenskap som du anger.
Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1
Mer information om de cmdletar som används i det här avsnittet finns i följande artiklar.
Ändra registernyckelvärden
Cmdleten Set-ItemProperty
anger attribut för registernycklar. I följande exempel används Set-ItemProperty
för att ändra starttypen för bufferttjänsten till manuell. I exemplet ändras StartType tillbaka till Automatisk med hjälp av cmdleten Set-Service
.
Get-Service spooler | Select-Object Name, StartMode
Name StartType
---- ---------
spooler Automatic
$path = "HKLM:\SYSTEM\CurrentControlSet\Services\Spooler\"
Set-ItemProperty -Path $path -Name Start -Value 3
Get-Service spooler | Select-Object Name, StartMode
Name StartType
---- ---------
spooler Manual
Set-Service -Name Spooler -StartupType Automatic
Varje registernyckel har ett standardvärde . Du kan ändra standardvärdet för en registernyckel med antingen Set-Item
eller Set-ItemProperty
.
Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"
Mer information om de cmdletar som används i det här avsnittet finns i följande artiklar.
Skapa registernycklar och -värden
Cmdleten New-Item
skapar registernycklar med ett namn som du anger.
Du kan också använda mkdir
funktionen som anropar cmdleten New-Item
internt.
mkdir ContosoCompany
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
ContosoCompany
Du kan använda cmdleten New-ItemProperty
för att skapa värden i en registernyckel som du anger. I följande exempel skapas ett nytt DWORD-värde på registernyckeln ContosoCompany.
$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path -Name Test -Type DWORD -Value 1
Anteckning
I avsnittet dynamiska parametrar i den här artikeln finns andra tillåtna typvärden.
Detaljerad cmdlet-användning finns i New-ItemProperty.
Kopiera registernycklar och -värden
I registerprovidern använder du cmdleten Copy-Item
kopierar registernycklar och -värden. Använd cmdleten Copy-ItemProperty
för att endast kopiera registervärden.
Följande kommando kopierar registernyckeln "Contoso" och dess egenskaper till den angivna platsen "HKLM:\Software\Fabrikam".
Copy-Item
skapar målnyckeln om den inte finns. Om målnyckeln finns Copy-Item
skapar du en dubblett av källnyckeln som ett underordnat objekt (undernyckel) till målnyckeln.
Copy-Item -Path HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam
Följande kommando använder cmdleten Copy-ItemProperty
för att kopiera värdet "Server" från "Contoso"-nyckeln till "Fabrikam"-nyckeln.
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server
Mer information om de cmdletar som används i det här avsnittet finns i följande artiklar.
Flytta registernycklar och -värden
Move-Item
Cmdletarna och Move-ItemProperty
fungerar som deras "Kopiera"-motsvarigheter. Om målet finns Move-Item
flyttar du källnyckeln under målnyckeln. Om målnyckeln inte finns flyttas källnyckeln till målsökvägen.
Följande kommando flyttar "Contoso"-nyckeln till sökvägen HKLM:\SOFTWARE\Fabrikam
.
Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam
Det här kommandot flyttar alla egenskaper från HKLM:\SOFTWARE\ContosoCompany
till HKLM:\SOFTWARE\Fabrikam
.
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *
Mer information om de cmdletar som används i det här avsnittet finns i följande artiklar.
Byta namn på registernycklar och värden
Du kan byta namn på registernycklar och värden på samma sätt som för filer och mappar.
Rename-Item
byter namn på registernycklar och Rename-ItemProperty
byter namn på registervärden.
$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam
Ändra säkerhetsbeskrivningar
Du kan begränsa åtkomsten Get-Acl
till registernycklar med hjälp av cmdletarna och Set-Acl
. I följande exempel läggs en ny användare med fullständig kontroll till registernyckeln HKLM:\SOFTWARE\Contoso
.
$acl = Get-Acl -Path HKLM:\SOFTWARE\Contoso
$rule = New-Object System.Security.AccessControl.RegistryAccessRule `
("CONTOSO\jsmith", "FullControl", "Allow")
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path HKLM:\SOFTWARE\Contoso
Fler exempel och information om cmdlet-användning finns i följande artiklar.
Ta bort och rensa registernycklar och registervärden
Du kan ta bort inneslutna objekt med hjälp Remove-Item
av , men du uppmanas att bekräfta borttagningen om objektet innehåller något annat. I följande exempel försöker ta bort en nyckel HKLM:\SOFTWARE\Contoso
.
dir HKLM:\SOFTWARE\Contoso\
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Contoso
Name Property
---- --------
ChildKey
Remove-Item -Path HKLM:\SOFTWARE\Contoso
Confirm
The item at HKLM:\SOFTWARE\Contoso 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 HKLM:\SOFTWARE\Contoso -Recurse
Om du vill ta bort alla objekt i HKLM:\SOFTWARE\Contoso
men inte HKLM:\SOFTWARE\Contoso
sig själv använder du ett avslutande omvänt snedstreck \
följt av ett jokertecken.
Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse
Det här kommandot tar bort registervärdet "ContosoTest" från registernyckeln HKLM:\SOFTWARE\Contoso
.
Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest
Clear-Item
rensar alla registervärden för en nyckel. I följande exempel rensas alla värden från registernyckeln HKLM:\SOFTWARE\Contoso
. Om du bara vill rensa en specifik egenskap använder du Clear-ItemProperty
.
Get-Item .\Contoso\
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
Contoso Server : {a, b, c}
HereString : {This is text which contains
newlines. It also contains "quoted" strings}
(default) : 1
Clear-Item .\Contoso\
Get-Item .\Contoso\
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
Contoso
Fler exempel och information om cmdlet-användning finns i följande artiklar.
Dynamiska parametrar
Dynamiska parametrar är cmdlet-parametrar som läggs till av en PowerShell-provider och är endast tillgängliga när cmdleten används på den provideraktiverade enheten.
Skriv <Microsoft.Win32.RegistryValueKind>
Upprättar eller ändrar datatypen för ett registervärde. Standardvärdet är String
(REG_SZ).
Den här parametern fungerar som den är utformad för cmdleten Set-ItemProperty . Den är också tillgänglig på cmdleten Set-Item på registerenheterna, men den har ingen effekt.
Värde | Beskrivning |
---|---|
String |
Anger en null-avslutad sträng. Används för REG_SZ värden. |
ExpandString |
Anger en null-avslutad sträng som innehåller oexpanderad |
referenser till miljövariabler som expanderas när | |
värdet hämtas. Används för REG_EXPAND_SZ värden. | |
Binary |
Anger binära data i valfri form. Används för REG_BINARY värden. |
DWord |
Anger ett 32-bitars binärt tal. Används för REG_DWORD värden. |
MultiString |
Anger en matris med null-avslutade strängar som avslutas av |
två null-tecken. Används för REG_MULTI_SZ värden. | |
QWord |
Anger ett 64-bitars binärt tal. Används för REG_QWORD värden. |
Unknown |
Anger en registerdatatyp som inte stöds, till exempel |
REG_RESOURCE_LIST värden. |
Cmdletar stöds
Använda pipelinen
Provider-cmdletar accepterar pipelineindata. Du kan använda pipelinen för att förenkla uppgiften genom att skicka providerdata från en cmdlet till en annan provider-cmdlet. Mer information om hur du använder pipelinen med provider-cmdletar finns i cmdlet-referenserna i den här artikeln.
Få hjälp
Från och med Windows PowerShell 3.0 kan du få anpassade hjälpavsnitt för provider-cmdletar som förklarar hur dessa cmdletar fungerar på en filsystemenhet.
Om du vill hämta hjälpavsnitten som är anpassade för filsystemenheten kör du ett Get-Help
kommando på en filsystemenhet eller använder parametern Sökväg för att ange en filsystemenhet.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM: