- 06/05/2017
- 5 minuter att läsa
-
- j
- s
- k
- m
- b
olika tillvägagångssätt när man arbetar med dem.
lista registerposter
det finns många olika sätt att undersöka registerposter. Det enklaste sättet är att få fastighetennamn associerade med en nyckel. För att till exempel se namnen på posterna i registernyckeln
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
, användGet-Item
. Registernycklarha en egenskap med det generiska namnet ”egenskap” som är en lista över registerposter i nyckeln.Följande kommando väljer Fastighetsegenskapen och expanderar objekten så att de visas i en lista:DevicePathMediaPathUnexpandedProgramFilesDirCommonFilesDirProductId
För att visa registerposterna i en mer läsbar form, använd
Get-ItemProperty
:Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Windows PowerShell-relaterade egenskaper för nyckeln är alla prefixade med ”PS”, till exempel asPSPath, PSParentPath, pschildname och psprovider.
Du kan använda
*.*
för att hänvisa till den aktuella platsen. Du kan användaSet-Location
för att ändra till CurrentVersion registerbehållaren först:Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Alternativt kan du använda den inbyggda HKLM PSDrive med
Set-Location
:Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion
Du kan sedan använda
*.*
Nuvarande plats för att lista egenskaperna utanspecificera en fullständig sökväg:Get-ItemProperty -Path .
...DevicePath : C:\WINDOWS\infMediaPathUnexpanded : C:\WINDOWS\MediaProgramFilesDir : C:\Program Files...
Path expansion fungerar på samma sätt som det gör inom filsystemet, så från den här platsen kan du getthe itemproperty notering för
HKLM:\SOFTWARE\Microsoft\Windows\Help
genom att användaGet-ItemProperty -Path ..\Help
.hämta en enda registerpost
Om du vill hämta en specifik post i en registernyckel kan du använda en av flera möjliga tillvägagångssätt. Detta exempel hittar värdet på DevicePath i
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
.använd
Get-ItemProperty
, använd Path-parametern för att ange namnet på nyckeln och theName-parametern för att ange namnet på DevicePath-posten.Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath
detta kommando returnerar standard Windows PowerShell egenskaper samt DevicePathproperty.
Obs
Även om
Get-ItemProperty
har Filter, inkluderar och utesluter parametrar, kan de inteanvändas för att filtrera efter egenskapsnamn. Dessa parametrar hänvisar till registernycklar, som är objektvägar och inte registerposter, som är objektegenskaper.ett annat alternativ är att använda Reg.exe kommandoradsverktyg. För hjälp med reg.exe, skriv
reg.exe /?
vid en kommandotolk. För att hitta DevicePath-posten, använd reg.exe som visas i följande kommando:reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath
Du kan också använda wshshell COM-objektet för att hitta några registerposter, även om dettaMetod fungerar inte med stora binära data eller med registerpostnamn som innehåller teckensåsom”\”). Lägg till egenskapsnamnet på objektvägen med en \ separator:
(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf
ställa in en enda registerpost
Om du vill ändra en specifik post i en registernyckel kan du använda en av flera möjliga tillvägagångssätt. Detta exempel ändrar sökvägsposten under
HKEY_CURRENT_USER\Environment
. ThePath-posten anger var du ska hitta körbara filer.- hämta det aktuella värdet för sökvägsposten med
Get-ItemProperty
. - Lägg till det nya värdet, separera det med ett
;
. - använd
Set-ItemProperty
med den angivna nyckeln, inmatningsnamnet och värdet för att ändra registryentry.
Obs
Även om
Set-ItemProperty
har Filter, inkludera och utesluta parametrar, kan de inte användas för att filtrera efter egenskapsnamn. Dessa parametrar hänvisar till registernycklar—som är itempaths—och inte registerposter—som är objektegenskaper.ett annat alternativ är att använda Reg.exe kommandoradsverktyg. För hjälp med reg.exe, skriv reg.exe/?vid en kommandotolk.
följande exempel ändrar posten sökväg genom att ta bort den sökväg som läggs till i exemplet ovan.
Get-ItemProperty
används fortfarande för att hämta det aktuella värdet för att undvika att behöva analysera strängreturned frånreg query
. Metoderna SubString och LastIndexOf används för att hämta den senaste sökvägen som läggs till i Sökvägsposten.The operation completed successfully.
skapa nya registerposter
för att lägga till en ny post med namnet” PowerShellPath”till CurrentVersion-tangenten, använd
New-ItemProperty
med sökvägen till nyckeln, inmatningsnamnet och värdet på posten. För det här exemplet kommer vi attta värdet på Windows PowerShell-variabeln$PSHome
, som lagrar sökvägen tillinstallationskatalog för Windows PowerShell.Du kan lägga till den nya posten till nyckeln med hjälp av följande kommando, och kommandot returnerar ocksåinformation om den nya posten:
Egenskapentyp måste vara namnet på en Microsoft.Win32.RegistryValueKind uppräkningsmedlemfrån följande tabell:
PropertyType Value Meaning Binary Binary data DWord A number that is a valid UInt32 ExpandString A string that can contain environment variables that are dynamically expanded MultiString A multiline string String Any string value QWord 8 bytes of binary data Obs
Du kan lägga till en registerpost på flera platser genom att ange en rad värden för path-parametern:
Du kan också skriva över ett befintligt registerpostvärde genom att lägga till kraftparametern till något
New-ItemProperty
kommando.byta namn på registerposter
för att byta namn på PowerShellPath-posten till ”PSHome”, använd
Rename-ItemProperty
:Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome
för att visa det döpta värdet, Lägg till parametern PassThru till kommandot.
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru
radera registerposter
för att radera både pshome-och PowerShellPath-registerposter, använd
Remove-ItemProperty
: