Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet gäller endast för Windows-plattformar.
Eftersom registerposter är egenskaper för nycklar och därför inte kan bläddras direkt måste vi använda en något annorlunda metod när du arbetar med dem.
Lista registerposter
Det finns många olika sätt att undersöka registerposter. Det enklaste sättet är att hämta de egenskapsnamn som är associerade med en nyckel. Om du till exempel vill se namnen på posterna i registernyckeln HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersionanvänder du Get-Item. Registernycklar har en egenskap med det allmänna namnet "Egenskap" som är en lista över registerposter i nyckeln. Följande kommando väljer egenskapen Egenskap och expanderar objekten så att de visas i en lista:
Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion |
    Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId
Om du vill visa registerposterna i ett mer läsbart formulär använder du Get-ItemProperty:
Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
ProgramFilesDir          : C:\Program Files
CommonFilesDir           : C:\Program Files\Common Files
ProgramFilesDir (x86)    : C:\Program Files (x86)
CommonFilesDir (x86)     : C:\Program Files (x86)\Common Files
CommonW6432Dir           : C:\Program Files\Common Files
DevicePath               : C:\WINDOWS\inf
MediaPathUnexpanded      : C:\WINDOWS\Media
ProgramFilesPath         : C:\Program Files
ProgramW6432Dir          : C:\Program Files
SM_ConfigureProgramsName : Set Program Access and Defaults
SM_GamesName             : Games
PSPath                   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWA
                           RE\Microsoft\Windows\CurrentVersion
PSParentPath             : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWA
                           RE\Microsoft\Windows
PSChildName              : CurrentVersion
PSDrive                  : HKLM
PSProvider               : Microsoft.PowerShell.Core\Registry
Windows PowerShell-relaterade egenskaper för nyckeln är alla prefix med "PS", till exempel PSPath, PSParentPath, PSChildName och PSProvider.
Du kan använda notationen *.* för att referera till den aktuella platsen. Du kan använda Set-Location för att ändra till CurrentVersion-registercontainern först:
Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Du kan också använda den inbyggda HKLM: PSDrive med Set-Location:
Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
Du kan sedan använda notationen . för den aktuella platsen för att visa egenskaperna utan att ange en fullständig sökväg:
Get-ItemProperty -Path .
...
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
...
Sökvägsexpansion fungerar på samma sätt som i filsystemet, så från den här platsen kan du hämta ItemProperty-listan för HKLM:\SOFTWARE\Microsoft\Windows\Help att använda Get-ItemProperty -Path ..\Help.
Hämta en enda registerpost
Om du vill hämta en specifik post i en registernyckel kan du använda någon av flera möjliga metoder. Det här exemplet hittar värdet för DevicePath i HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.
Använd Get-ItemPropertyparametern Sökväg för att ange namnet på nyckeln och parametern Namn för att ange namnet på DevicePath-posten .
Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath
DevicePath   : C:\WINDOWS\inf
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
PSChildName  : CurrentVersion
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry
Det här kommandot returnerar standardegenskaperna för Windows PowerShell samt egenskapen DevicePath .
Kommentar
Även om Get-ItemProperty parametrarna Filter, Include och Exclude har kan de inte användas för att filtrera efter egenskapsnamn. Dessa parametrar refererar till registernycklar, som är objektsökvägar och inte registerposter, som är objektegenskaper.
Ett annat alternativ är att använda kommandoradsverktyget reg.exe . Om du vill ha hjälp med reg.exeskriver du reg.exe /? i en kommandotolk. Om du vill hitta DevicePath-posten använder du reg.exe det som visas i följande kommando:
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
    DevicePath  REG_EXPAND_SZ   %SystemRoot%\inf
Du kan också använda WshShell COM-objektet för att hitta vissa registerposter, även om den här metoden inte fungerar med stora binära data eller med registerinmatningsnamn som innehåller tecken som omvänt snedstreck (\). Lägg till egenskapsnamnet i objektsökvägen med en \ avgränsare:
(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf
Ange en enskild registerpost
Om du vill ändra en specifik post i en registernyckel kan du använda någon av flera möjliga metoder. I det här exemplet ändras posten Sökväg under HKEY_CURRENT_USER\Environment. Sökvägen  anger var körbara filer ska hittas.
- Hämta det aktuella värdet för posten Sökväg med hjälp av 
Get-ItemProperty. - Lägg till det nya värdet och avgränsa det med en 
;. - Använd 
Set-ItemPropertymed den angivna nyckeln, postnamnet och värdet för att ändra registerposten. 
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path += ";C:\src\bin\"
Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $newpath
Kommentar
Även om Set-ItemProperty parametrarna Filter, Include och Exclude har kan de inte användas för att filtrera efter egenskapsnamn. De här parametrarna refererar till registernycklar – som är objektsökvägar – och inte registerposter – som är objektegenskaper.
Ett annat alternativ är att använda kommandoradsverktyget Reg.exe. Om du vill ha hjälp med reg.exe skriver du reg.exe /? i en kommandotolk.
I följande exempel ändras posten Sökväg genom att den sökväg som läggs till i exemplet ovan tas bort.
Get-ItemProperty används fortfarande för att hämta det aktuella värdet för att undvika att behöva parsa strängen som returneras från reg query. Metoderna SubString och LastIndexOf används för att hämta den sista sökvägen som lades till i sökvägen .
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path.SubString(0, $value.Path.LastIndexOf(';'))
reg add HKCU\Environment /v Path /d $newpath /f
The operation completed successfully.
Skapa nya registerposter
Om du vill lägga till en ny post med namnet "PowerShellPath" i CurrentVersion-nyckeln använder du New-ItemProperty med sökvägen till nyckeln, postnamnet och värdet för posten. I det här exemplet tar vi värdet för Windows PowerShell-variabeln $PSHome, som lagrar sökvägen till installationskatalogen för Windows PowerShell.
Du kan lägga till den nya posten i nyckeln med hjälp av följande kommando, och kommandot returnerar även information om den nya posten:
$newItemPropertySplat = @{
    Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
    Name = 'PowerShellPath'
    PropertyType = 'String'
    Value = $PSHome
}
New-ItemProperty @newItemPropertySplat
PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
PSChildName    : CurrentVersion
PSDrive        : HKLM
PSProvider     : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0
PropertyType måste vara namnet på en Microsoft.Win32.RegistryValueKind-uppräkningsmedlem från följande tabell:
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 .
Du kan lägga till en registerpost på flera platser genom att ange en matris med värden för parametern Path :
$newItemPropertySplat = @{
    Name = 'PowerShellPath'
    PropertyType = 'String'
    Value = $PSHome
    Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion',
           'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion'
}
New-ItemProperty @newItemPropertySplat
Du kan också skriva över ett befintligt registerpostvärde genom att lägga till  force-parametern i valfritt New-ItemProperty kommando.
I följande exempel visas hur du skapar nya registerposter av olika typer. Registervärdena skapas i en ny nyckel med namnet MySoftwareKey under HKEY_CURRENT_USER\Software. Variabeln $key används för att lagra det nya nyckelobjektet.
$key = New-Item -Path HKCU:\Software -Name MySoftwareKey
$newItemPropertySplat = @{
    Path = $key.PSPath
    Name = 'DefaultFolders'
    PropertyType = 'MultiString'
    Value = 'Home', 'Temp', 'Publish'
}
New-ItemProperty @newItemPropertySplat
DefaultFolders : {Home, Temp, Publish}
PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName    : MySoftwareKey
PSProvider     : Microsoft.PowerShell.Core\Registry
Du kan använda PSPath-egenskapen för nyckelobjektet i efterföljande kommandon.
New-ItemProperty -Path $key.PSPath -Name MaxAllowed -PropertyType QWord -Value 1024
MaxAllowed   : 1024
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName  : MySoftwareKey
PSProvider   : Microsoft.PowerShell.Core\Registry
Du kan också skicka en pipe $key till för att lägga till New-ItemProperty ett värde i nyckeln.
$date = Get-Date -Format 'dd-MMM-yyyy'
$newItemPropertySplat = @{
    Name = 'BinaryDate'
    PropertyType = 'Binary'
    Value = ([System.Text.Encoding]::UTF8.GetBytes($date))
}
$key | New-ItemProperty @newItemPropertySplat
BinaryDate   : {51, 49, 45, 74…}
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName  : MySoftwareKey
PSProvider   : Microsoft.PowerShell.Core\Registry
Om du visar innehållet $key i visas de nya posterna.
$key
    Hive: HKEY_CURRENT_USER\Software
Name                           Property
----                           --------
MySoftwareKey                  DefaultFolders : {Home, Temp, Publish}
                               MaxAllowed     : 1024
                               BinaryDate     : {51, 49, 45, 74…}
I följande exempel visas värdetypen för varje typ av registerpost:
$key.GetValueNames() | Select-Object @{n='ValueName';e={$_}},
     @{n='ValueKind';e={$key.GetValueKind($_)}},
     @{n='Type';e={$key.GetValue($_).GetType()}},
     @{n='Value';e={$key.GetValue($_)}}
ValueName        ValueKind Type            Value
---------        --------- ----            -----
DefaultFolders MultiString System.String[] {Home, Temp, Publish}
MaxAllowed           QWord System.Int64    1024
BinaryDate          Binary System.Byte[]   {51, 49, 45, 74…}
Byta namn på registerposter
Om du vill byta namn på PowerShellPath-posten till "PSHome" använder du Rename-ItemProperty:
$renameItemPropertySplat = @{
    Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
    Name = 'PowerShellPath'
    NewName = 'PSHome'
}
Rename-ItemProperty @renameItemPropertySplat
Om du vill visa det omdöpta värdet lägger du till parametern PassThru i kommandot .
$renameItemPropertySplat = @{
    Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
    Name = 'PowerShellPath'
    NewName = 'PSHome'
    PassThru = $true
}
Rename-ItemProperty @renameItemPropertySplat
Ta bort registerposter
Om du vill ta bort både PSHome- och PowerShellPath-registerposterna använder du Remove-ItemProperty:
Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath