Hoe PowerShell te gebruiken om de registerwaarde te lezen

24 juni 2021 14116 Keer bekeken Hoe PowerShell te gebruiken om de registerwaarde te lezen

In deze S Zone leert Victor u hoe u PowerShell kunt gebruiken om de registerwaarde te lezen.





De handleiding begint door u te leren hoe u het registerpad opmaakt voor gebruik met PowerShell. U leert ook de beste methode om een ​​registersleutel te kopiëren voor gebruik in PowerShell.



Ten slotte biedt de gids 10 voorbeelden met verschillende manieren om PowerShell te gebruiken om registerwaarden te lezen.

De gids bevat verschillende onderwerpen en voorbeelden. Als u een specifiek onderwerp of voorbeeld wilt lezen, vouwt u Blader door berichtonderwerpen hieronder uit en klikt u op het onderwerp.



Blader door berichtonderwerpen



Hoe registerpaden voor PowerShell te formatteren?

Hoe PowerShell te gebruiken om de registerwaarde te lezen - Hoe registerpaden voor PowerShell te formatteren

Voordat ik u leer hoe u PowerShell kunt gebruiken om de registerwaarde te lezen, wil ik u leren hoe u registerpaden opmaakt om met PowerShell te werken.

Het Windows-register heeft 5 sleutels op het hoogste niveau (rootsleutels):



  1. HKEY_LOCAL_MACHINE
  2. HKEY_CURRENT_CONFIG
  3. HKEY_CLASSES_ROOT
  4. HKEY_USERS
  5. HKEY_CURRENT_USER

Om een ​​registerwaarde te lezen, specificeert u de sleutel als een pad in de Get-ItemProperty of Get-Item cmdlets. Er zijn 2 manieren om het registerpad op te maken:



Formatteren met het volledige registersleutelpad

Binnenkomen Register:: gevolgd door het volledige pad naar het register. Om bijvoorbeeld te specificeren: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion , Ik zal gebruiken Register::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

Formatteren met het verkorte registersleutelpad

U kunt ook de afkorting van de registersleutel op het hoogste niveau (rootsleutel) invoeren, gevolgd door een dubbele punt (:), en vervolgens het volledige pad naar de registersleutel (zonder de rootnaam).

Ter herinnering, hier zijn de afkortingen voor de grondsleutels:

HKEY_LOCAL_MACHINE – HKLM
HKEY_CURRENT_CONFIG – HKCC
HKEY_CLASSES_ROOT – HKCR
HKEY_USERS – HKU
HKEY_CURRENT_USER – HKCU

Om het registerpad op te geven, HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion met deze tweede methode wordt geschreven - HKLM:SOFTWAREMicrosoftWindowsCurrentVersion

Merk op dat hoewel de rootnaam is verwijderd, de eerste schuine streep () behouden is gebleven.

Hoe de naam van de registersleutel te kopiëren

Nog één ding voordat ik verder ga - het is beter om het pad naar de registersleutel die u wilt lezen met PowerShell te kopiëren - in plaats van het handmatig te typen.

Om een ​​registersleutel te kopiëren, klikt u met de rechtermuisknop op de sleutel en selecteert u Sleutelnaam kopiëren . Hier is een voorbeeld.

Hoe PowerShell te gebruiken om de registerwaarde te lezen - Hoe registerpaden voor PowerShell te formatteren

Gebruik PowerShell om de registerwaarde te lezen: Voorbeelden

Gebruik PowerShell om de registerwaarde te lezen: Voorbeelden

Nu u weet hoe u een registerpad opmaakt voor gebruik met PowerShell, vindt u in deze sectie 10 voorbeelden om PowerShell te gebruiken om de registerwaarde te lezen:

het starten van de uitvoer is mislukt. controleer het logboek voor details

Hoe u alle waarden in een registersleutel kunt retourneren

Om alle waarden van een registersleutel te retourneren, voert u de onderstaande opdracht in en drukt u op enter.

|__+_| Wijzig het pad in het pad voor de registersleutel waarvan u de waarden wilt lezen. Onthoud de registeropmaak uit de laatste sectie.

De opdracht retourneert alle waarden in het opgegeven pad. De tweede schermafbeelding hieronder is de daadwerkelijke registervermelding.

Als u het PowerShell-resultaat en de registerwaarden (tweede deelvenster) vergelijkt, zijn ze precies hetzelfde.

Hoe u een specifieke waarde in een registersleutel kunt retourneren en deze in een variabele kunt opslaan?

In navolging van de laatste sectie heeft de opdracht in die sectie alle waarden in het opgegeven registerpad geretourneerd. U kunt PowerShell echter ook gebruiken om de registerwaarde te lezen, maar een specifieke waarde te retourneren.

Er zijn meerdere manieren om dit te doen.

Het laatste commando (de Get-ItemProperty command) heeft de waarden geretourneerd die in de onderstaande schermafbeelding worden getoond.

Deze afbeelding heeft een leeg alt-attribuut; de bestandsnaam is image-74-1024x591.png

Om de waarde terug te geven: GemeenschappelijkeBestandenDir , gebruik een van de onderstaande commando's:

|__+_| |__+_|

De twee opdrachten retourneren de registergegevens, zonder de eigendomsnaam, GemeenschappelijkeBestandenDir . Zie de schermafbeelding hieronder:

Ten slotte kunt u voor deze subsectie PowerShell gebruiken om de registerwaarde te lezen en de waarde in een variabele op te slaan. We kunnen bijvoorbeeld de registergegevens in de laatste opdracht opslaan in een variabele met de naam $RegData .

Hier is de gewijzigde opdracht:

|__+_|

Wanneer u nu de opdracht uitvoert, wordt er geen resultaat op de console geretourneerd omdat het resultaat wordt opgeslagen in de variabele ...

Hoe u een specifieke waarde in een registersleutel kunt retourneren en deze in een variabele kunt opslaan?

Als u echter het resultaat wilt weergeven dat in de variabele is opgeslagen, voert u de variabele uit...

|__+_|

Hier is het resultaat in PowerShell...

Hoe de naam van de registersubsleutel te retourneren

De laatste opdracht in de laatste laatste subsectie retourneerde zowel de namen van de registersleutels als hun gegevens.

Soms wilt u echter de namen weergeven zonder de gegevens. U kunt de Get-Item cmdlet om dit te doen. Zie de opdracht hieronder...

|__+_|

De opdracht retourneert de namen van de registersleutels zonder de bijbehorende gegevenskolom.

Hoe PowerShell te gebruiken om de registerwaarde te lezen en binaire gegevens te retourneren

In dit voorbeeld wil ik de binaire waarde in de registersleutel weergeven, BijschriftLettertype . Deze sleutel bevindt zich in dit registerpad HKEY_CURRENT_USERConfiguratieschermDesktopWindowMetrics.

Hoe PowerShell te gebruiken om de registerwaarde te lezen en binaire gegevens te retourneren

De eerste stap is het teruggeven van het eigendom van de BijschriftLettertype sleutel. Laten we echter, voordat ik dat doe, alle eigenschappen opsommen in HKEY_CURRENT_USERConfiguratieschermDesktopWindowMetrics .

|__+_|

De opdracht retourneert een set eigenschappen, waaronder BijschriftLettertype .

Om alleen de eigenschappen terug te geven, pijpt u de bovenstaande opdracht naar de Select-Object...

|__+_|

Met deze opdracht worden alle eigenschappen in de lijst weergegeven.

Hoe PowerShell te gebruiken om de registerwaarde te lezen en binaire gegevens te retourneren

Om de CaptionFont (de 4e waarde in de array) weer te geven, werkt u de opdracht bij zoals hieronder weergegeven en slaat u deze op in een variabele ...

|__+_|

Om vervolgens het type registerwaarde (in dit geval REG_BINARY) weer te geven, roept u de GetValueKind Methode in de originele opdracht opgeslagen in de $sleutel variabel. Gebruik dan BijschriftLettertype (opgeslagen in de $nam e) als de waarde in de Methode.

Hier is de opdracht...

|__+_|

Het resultaat is, zoals verwacht, binair.

Vervolgens lezen we de waarden in het binaire registertype met de PowerShell-opdracht hieronder ...

|__+_|

Zoals je kunt zien aan de opdracht, wordt de waarde opnieuw geprobeerd door de . aan te roepen GetValue Methode in de originele sleutel opgeslagen in de $sleutel variabel. Gebruik vervolgens de naam van het pand, BijschriftLettertype in de Methode.

Het resultaat is een stapel cijfers. Zie de onderstaande schermafbeelding om deze waarde in het register te zien.

Hoe PowerShell te gebruiken om de registerwaarde te lezen en binaire gegevens te retourneren

Ten slotte heb ik, om het gemakkelijk te maken om registerwaarden weer te geven, een PowerShell-functie gemaakt met de naam Get-RegistryData. Om de functie te downloaden, klik op download Get-RegistryData.zip

Eenmaal gedownload, unzip het bestand. Voer vervolgens de onderstaande opdrachten uit:

|__+_| Vervang C:UsersVictorADownloadsGet-RegistryDataGet-RegistryData door het pad naar de functie op uw computer.

Voer de onderstaande opdracht uit om de waarden of gegevens in de sleutels op een registerpad te krijgen.

|__+_|

De opdracht geeft de namen van de sleutels, het registerpad en het type sleutel weer. De kolom Type is verborgen in mijn onderstaande schermafbeelding.

Als alternatief, als u bepaalde headers niet wilt weergeven, kunt u Get-RegistryData pipen naar Select-Object.

|__+_|

Met de bovenstaande opdracht geeft Get-RegistryData de . weer Naam , Type , en Gegevens van elke sleutel in het opgegeven registerpad...

Get-RegistryData-functie heeft een enkele parameter genaamd Registerpad

Hoe PowerShell te gebruiken om de registerwaarde te lezen en een array te retourneren

Als u de registersleutel met PowerShell wilt lezen en de waarde in een array wilt retourneren, gebruikt u de Get-ChildItem opdracht.

Deze registersleutel, HKEY_CURRENT_USERConfiguratieschermDesktop heeft 3 subsleutels. De onderstaande opdracht retourneert alle subsleutels, hun eigenschappen en waarden:

|__+_|

Deze waarden worden geretourneerd in een array. Voer de onderstaande opdracht uit om te bevestigen ...

|__+_|

Deze opdracht bevestigt dat het gegevenstype in de laatste opdracht, opgeslagen in de $subkeys-variabele, een array is.

Hoe PowerShell te gebruiken om de registerwaarde te lezen en een array te retournerenVoor de Get-ChildItem opdracht om resultaten in een array te retourneren, moet de registersleutel subsleutels hebben.

Hoe PowerShell te gebruiken om registerwaarde te krijgen als deze bestaat

Het voorbeeld in deze subsectie is vergelijkbaar met alle andere voorbeelden in deze handleiding, met een kleine uitzondering. De kleine wijziging hier is om Test-Path te gebruiken om te controleren of het pad bestaat.

Als het pad bestaat, haalt u de waarden op met PowerShell. Dit eenvoudige script controleert of het registerpad HKEY_CURRENT_USERConfiguratieschermDesktop bestaat.

Als het dan bestaat, leest het de waarden met de opdracht Get-ItemProperty.

|__+_|

De registersleutel, Register::HKEY_CURRENT_USERConfiguratieschermDesktop bestaat. Dus de laatste opdracht heeft zijn waarden geretourneerd.

Laten we eens kijken of we een registersleutel specificeren die niet bestaat...

|__+_|

Deze keer voert het script het script uit in de Anders blok van de ALS stelling.

Hoe PowerShell te gebruiken om registerwaarde te krijgen als deze bestaat

Hoe u PowerShell kunt gebruiken om registerwaarden op te halen en te vergelijken

Zoals je misschien al vermoedde, is de Get-Item en Get-ItemProperty opdrachten geven de registersleuteltypen en -gegevens niet weer. Dus als u de gegevens in een sleutel wilt vergelijken, moet u een andere manier vinden om dit te doen.

In de subsectie Hoe PowerShell te gebruiken om registerwaarde te lezen en binaire gegevens te retourneren, heb ik vermeld dat ik een functie heb gemaakt met de naam Get-RegistryData.

Om de opdrachten in deze subsectie uit te voeren, moet u de Get-RegistryData.zip-functie downloaden. Zie de subsectie PowerShell gebruiken om registerwaarde te lezen en binaire gegevens te retourneren.

U kunt deze functie gebruiken om de namen, typen en gegevens van de subsleutels in een opgegeven registerpad te retourneren.

Als u bijvoorbeeld de namen, typen en gegevens van alle vermeldingen in HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorer wilt retourneren, voert u de onderstaande opdracht uit...

|__+_|

Als we verder gaan, zeg dan dat ik de waarde van de wil vergelijken IcoonOnderstrepen sleutel met een andere waarde, ga ik verder zoals hieronder beschreven.

  1. Leid de uitvoer van de Get-RegistryData commando in a Waar-Object commando en filter op Naam is gelijk aan IcoonOnderstrepen .
|__+_|

De laatste opdracht laat zien dat de huidige waarde in IconUnderline 3 is.

  1. Als ik deze waarde wil vergelijken met een andere waarde, zeg 2, zal ik de onderstaande commando's gebruiken. De eerste opdracht slaat de opdracht in stap 1 hierboven op in een variabele.
|__+_|

De ALS statement vergelijkt de huidige waarde in de registersleutel met 1. Dan, als het niet gelijk is aan 1, gebruikt het de Set-itemeigenschap commando om de waarde bij te werken naar wat u opgeeft in de Waarde parameter.

Hoe PowerShell te gebruiken om registersleutels en subsleutels te krijgen

Er zijn twee opdrachten die u kunt gebruiken om registersleutels en subsleutels op te halen. U kunt de Get-ItemProperty of de Get-ChildItem opdracht.

Het verschil tussen de twee opdrachten is hoe u het registerpad opgeeft.

om de te gebruiken Get-ItemProperty om de registersleutel en subsleutels te krijgen, voegt u een backslash toe aan het einde van het registerpad. Voeg vervolgens het asterisk-jokerteken toe achter de backslash.

Als u bijvoorbeeld de Get-ItemProperty wilt gebruiken om sleutels en subsleutels in HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorer te lezen, voert u de onderstaande opdracht uit:

|__+_|

Aan de andere kant vereist het gebruik van het Get-ChildItem geen backslash en een jokerteken. Hier is een voorbeeld met de opdracht Get-ChildItem:

|__+_|

Beide opdrachten retourneren de sleutels en subsleutels in het opgegeven registerpad.

Hoe PowerShell te gebruiken om de LastWriteTime van een registersleutel te krijgen

Terwijl ik dit artikel aan het onderzoeken was, kwam ik erachter dat veel gebruikers zoeken naar hoe ze PowerShell kunnen gebruiken om de laatste keer te krijgen dat een registersleutel is bijgewerkt.

Tijdens mijn onderzoek kwam ik er echter ook achter dat er geen bestaande cmdlets voor deze taak zijn. Bovendien lijkt het erop dat de enige oplossing is om een ​​aangepaste PowerShell-functie te maken.

Gelukkig vond ik een functie in superuser.com . Dus ik hoefde de mijne niet te maken!

Om het de lezers van S Zone gemakkelijk te maken, heb ik de Add-RegKeyLastWriteTime superuser.com functie.

Add-RegKeyLastWriteTime is met dank aan Cpt.Whale - een bijdrage aan de superuser.com-community

Om de functie van S Zone te downloaden, klikt u op download Add-RegKeyLastWriteTime.zip . Pak vervolgens het gedownloade zipbestand uit.

Open ten slotte PowerShell en voer de onderstaande opdrachten uit:

|__+_| Vervang C:UsersVictorADownloadsAdd-RegKeyLastWriteTimeAdd-RegKeyLastWriteTime door het pad naar de functie op uw computer.

Voer ten slotte de onderstaande opdracht uit om de laatste schrijftijd van een registersleutel te krijgen:

|__+_| HKCU is het verkorte formaat voor HKEY_CURRENT_CONFIG. Ik heb dit uitgebreid besproken in het gedeelte Registerpaden opmaken voor PowerShell van deze handleiding.

De opdracht retourneert de laatste schrijftijd voor alle subsleutels in de HKEY_CURRENT_USER basisregistersleutel...

Hoe PowerShell te gebruiken om een ​​registersleutel te krijgen

Hoe PowerShell te gebruiken om de registergrootte te krijgen

Als u de grootte van het register in Windows 10 wilt zien, voert u de onderstaande opdracht uit:

|__+_|

De opdracht retourneert de huidige en maximale grootte van de registerdatabase.

U kunt echter aanvullende resultaten weergeven met een verbeterde versie van de opdracht. Ik heb een code gevonden die dit kan doen in superuser.com .

De code van Markus (een bijdrager van de superuser.com-community) geeft aanvullende informatie weer. Hier is de code.

|__+_|

En het resultaat in PowerShell ISE …

Als ik hoop dat ik je met succes heb kunnen leren hoe je PowerShell kunt gebruiken om de registerwaarde te lezen!

Ik hoop ook dat je de S Zone nuttig vond. Als je het nuttig vond, stem dan vriendelijk Ja op de Was dit bericht Nuttige vraag hieronder.

U kunt ook een vraag stellen, een opmerking achterlaten of feedback geven met het formulier 'Een reactie achterlaten' aan het einde van deze pagina.

Bezoek ten slotte onze Windows PowerShell-instructiepagina voor meer PowerShell S-zones. Mogelijk vindt u onze Work from Home-pagina ook erg nuttig.

Referenties en verder lezen

  1. Werken met registervermeldingen
  2. Download Get-RegistryData.zip
  3. Download Add-RegKeyLastWriteTime.zip
  4. Windows PowerShell ISE uitgelegd