about_Registry_Provider
Providernamn
Register
Drivrutiner
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:
- Hämta plats
- Ange plats
- Hämta objekt
- Get-ChildItem
- Anropa objekt
- Flytta objekt
- Nytt objekt
- Ta bort objekt
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Set-Acl
Typer som exponeras av den här providern
Registerprovidern returnerar registerdata i en av två typer:
- Microsoft.Win32.RegistryKey för registernycklar
- PSCustomObject för registervärden
Navigera i registerenheterna
Registerprovidern exponerar sitt datalager som två standardenheter.
-
HKLM:
mappar tillHKEY_LOCAL_MACHINE
registreringsdatafilen -
HKCU:
mappar tillHKEY_CURRENT_USER
registreringsdatafilen
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 enhetsnamnet. 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
Kommentar
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 alias för Get-ChildItem, cd
är ett alias för Set-Location och pwd
är ett alias för Get-Location.
Det sista exemplet visar 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
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
en registernyckel visas inte undernycklarna. Cmdleten Get-ChildItem
visar undernycklar för "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 du anger. Resultatet är en 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 önskat egenskapsvärde.
$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 registervärden som är associerade med en registernyckel. I följande exempel används Set-ItemProperty
för att ändra starttypen för spooler-tjänsten till manuell. I exemplet ändras StartType tillbaka till Automatic
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 default
vä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 nya 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å ContosoCompany-registernyckeln.
$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1
Kommentar
Läs avsnittet dynamiska parametrar i den här artikeln för 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 endast cmdleten Copy-ItemProperty
för att 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) för 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 precis som med 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
Mer information om användning av exempel och cmdletar finns i följande artiklar.
Ta bort och rensa registernycklar och -värden
Du kan ta bort inneslutna objekt med hjälp av Remove-Item
. 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 wasn't 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 inom 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
Mer information om användning av exempel och cmdletar 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 i registerenheterna, men den har ingen effekt.
-
String
– Används för REG_SZ värden. Skicka ett[System.String]
objekt till parametern Value . -
ExpandString
– Används för REG_EXPAND_SZ värden. Skicka ett[System.String]
objekt till parametern Value . Strängen ska innehålla oexpanderade referenser till miljövariabler som expanderas när värdet hämtas. -
Binary
– Används för REG_BINARY värden. Skicka ett[System.Byte[]]
objekt till parametern Value . -
DWord
– Används för REG_DWORD värden. Skicka ett[System.Int32]
objekt till parametern Value . -
MultiString
– Används för REG_MULTI_SZ värden. Skicka ett[System.String[]]
objekt till parametern Value . -
QWord
– Används för REG_QWORD värden. Skicka ett[System.Int64]
objekt till parametern Value . -
Unknown
– Anger en registerdatatyp som inte stöds, till exempel REG_RESOURCE_LIST värden.
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 beter sig på en filsystemenhet.
Om du vill få hjälpavsnitt 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: