Dela via


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.

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

-Hämta objekt -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 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:

Se även

about_Providers