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, som beskrivs i den här artikeln.

Typer som exponeras av den här providern

Registernycklar representeras som instanser av klassen Microsoft.Win32.RegistryKey . Registerposter representeras som instanser av klassen PSCustomObject .

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 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 nu 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 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.

-Get-Item -Get-ChildItem

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 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 .

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å 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 Remove-Itemav , 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 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.

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 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:

Se även