Registerprovider
Providernamn
Register
Enheter
HKLM:
, HKCU:
Funktioner
ShouldProcess, UseTransactions
Kort beskrivning
Ger åtkomst till registernycklar, poster och värden i PowerShell.
Detaljerad beskrivning
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.
Det här 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.
I 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. I 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.
PS C:\ > 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 underordnade objekt för "Spooler"-nyckeln, inklusive egenskaperna för varje undernyckel. Egenskaperna för överordnade nycklar visas inte när du använder Get-ChildItem
.
PS C:\> 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.
PS C:\> cd HKLM:\System\CurrentControlSet\Services\Spooler
PS 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 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 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
.
PS C:\> 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
PS C:\> 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 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 spooler-tjänsten till manuell. I exemplet ändras StartType tillbaka till Automatisk med hjälp av cmdleten Set-Service
.
PS C:\> Get-Service spooler | Select-Object Name, StartMode
Name StartType
---- ---------
spooler Automatic
PS C:\> $path = "HKLM:\SYSTEM\CurrentControlSet\Services\Spooler\"
PS C:\> Set-ItemProperty -Path $path -Name Start -Value 3
PS C:\> Get-Service spooler | Select-Object Name, StartMode
Name StartType
---- ---------
spooler Manual
PS C:\> 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 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.
PS HKLM:\SOFTWARE\> 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
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 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 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 nyckeln "Contoso" 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 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 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 cmdlet-användningsinformation 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, men du uppmanas att bekräfta borttagningen om objektet innehåller något annat. I följande exempel försöker du ta bort nyckeln "HKLM:\SOFTWARE\Contoso".
PS C:\> dir HKLM:\SOFTWARE\Contoso\
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Contoso
Name Property
---- --------
ChildKey
PS C:\> 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 själva "HKLM:\SOFTWARE\Contoso" 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
.
PS HKLM:\SOFTWARE\> 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
PS HKLM:\SOFTWARE\> Clear-Item .\Contoso\
PS HKLM:\SOFTWARE\> Get-Item .\Contoso\
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
Contoso
Fler exempel och cmdlet-användningsinformation 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 på cmdleten Set-ItemProperty . Den är också tillgänglig på cmdleten Set-Item i registerenheterna, men den har ingen effekt.
Värde | Beskrivning |
---|---|
String |
Anger en null-avslutad sträng. Motsvarar REG_SZ. |
ExpandString |
Anger en null-avslutad sträng som innehåller outforskad |
referenser till miljövariabler som expanderas när | |
värdet hämtas. Motsvarar REG_EXPAND_SZ. | |
Binary |
Anger binära data i valfri form. Motsvarar REG_BINARY. |
DWord |
Anger ett 32-bitars binärt tal. Motsvarar REG_DWORD. |
MultiString |
Anger en matris med null-avslutade strängar som avslutas av |
två null-tecken. Motsvarar REG_MULTI_SZ. | |
QWord |
Anger ett 64-bitars binärt tal. Motsvarar REG_QWORD. |
Unknown |
Anger en registerdatatyp som inte stöds, till exempel |
REG_RESOURCE_LIST. |
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 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: