PowerShell om een registerwaarde op te halen: Een stapsgewijze handleiding

In dit artikel leer je hoe je PowerShell kunt gebruiken om een registerwaarde op te halen en registersleutels te bevragen met behulp van verschillende methoden.

Laten we beginnen!

Vereisten

Alle voorbeelden in dit artikel worden gedemonstreerd met behulp van PowerShell 7.1, wat op het moment van publicatie van dit artikel de nieuwste versie is. Je kunt ook Windows PowerShell 5.1 gebruiken als je dat wilt. Je moet ook een basiskennis hebben van PowerShell-drives.

Sommige voorbeelden werken mogelijk niet zonder beheerdersrechten.

Registersleutels en -waarden ophalen met Get-ChildItem

Een van de eenvoudigste manieren om registersleutels en -waarden te vinden, is door gebruik te maken van de cmdlet Get-ChildItem. Hiermee kun je met behulp van PowerShell een registerwaarde en meer ophalen door items in PowerShell-drives op te sommen. In dit geval is die PowerShell-drive de HKLM-drive die wordt gevonden door Get-PSDrive uit te voeren.

Voer de volgende opdracht uit in een PowerShell-console.

Get-ChildItem -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\'

In de onderstaande schermafbeelding zie je:

  1. Het volledige sleutelpad voor de WindowsUpdate-registersleutel
  2. De sleutel AU
  3. De lijst met registersvermeldingen in de AU-sleutel met bijbehorende waarden
Getting registry values for Windows Update

Eén snelle opmerking over de bovenstaande schermafbeelding. Je zult merken dat de uitvoer een beetje misleidend is. Normaal gesproken vertegenwoordigt de uitvoer van de PowerShell-console eigenschappen van een object. Get-ChildItem gedraagt zich in dit geval anders omdat dit object technisch gezien geen eigenschappen heeft. Extra commando’s worden op de achtergrond uitgevoerd om de weergaveopmaak te produceren die je ziet.

Gerelateerd: Hoe controleer je op een uitgestelde herstart in het Windows-register

Het verkrijgen van registerwaarden met Get-ItemProperty

Ga verder met dezelfde registerkey als eerder, laten we dit keer de Get-ItemProperty cmdlet gebruiken en de uitvoer leesbaarder maken.

Het gebruik van Get-ItemProperty is het beste om een item-eigenschap te verkrijgen en sleutels met hun waarden binnen het register te verkrijgen. Voer het onderstaande commando uit:

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'

In de onderstaande schermafbeelding zie je een lijst met sleutels en waarden:

  1. Voor de registercontainer AU
  2. PowerShell-gerelateerde eigenschappen die allemaal beginnen met PS
Using Get-ItemProperty in PowerShell to get registry values

Als alternatief kun je ook het register-item-pad specificeren om dezelfde uitvoer iets sneller te krijgen door .NET te gebruiken. Het onderstaande commando gebruikt de .NET Registry Class in PowerShell om een registerwaarde te verkrijgen:

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

Het verkrijgen van registerwaarden met Get-ItemPropertyValue

Nu is het tijd om naar sleutelwaarden te kijken. Met behulp van de Get-ItemPropertyValue cmdlet met dezelfde registercontainer als voorheen, laten we eens kijken naar de waarde voor de sleutel NoAutoUpdate. Voer de volgende PowerShell-opdracht uit:

Get-ItemPropertyValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\' -Name NoAutoUpdate

Met Get-ItemPropertyValue krijg je een beknoptere uitvoer waarin alleen de waarde wordt weergegeven en niet de andere informatie die je eerder zag.

NoAutoUpdate key and the corresponding value

Register bevragen zonder PS-drives

Gedurende deze handleiding heb je PowerShell-drives gebruikt om met het register te werken. Dit is echter niet de enige manier; je kunt ook .NET gebruiken en registerinformatie verkrijgen via .NET-klassen!

Bijvoorbeeld, misschien moet je PowerShell gebruiken om een registerwaarde van HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ : AutoUpate op een externe computer te verkrijgen.

Dit kun je doen met .NET door:

  1. De registerverbinding op de externe computer te openen.
$Registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computername)

De specifieke registerwaarde te openen waar je naar op zoek bent.

$RegistryKey = $Registry.OpenSubKey("SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU", $true)

Het GetValue()-methode gebruiken om de waarde van de registerwaarde binnen de registerkey op te vragen.

$RegistryKey.GetValue('AU')

Het gebruik van .NET in plaats van PowerShell-drives is iets sneller en is een eenvoudige manier om verbinding te maken met PowerShell en registerkeys en waarden op externe computers te bevragen.

Registerwaarden testen met Test-Path

Soms moet je gewoon valideren of een registerwaarde aanwezig is. Dat doe je met behulp van de Test-Path cmdlet.

Vervolg met de WindowsUpdate-container, test of de AU-container aanwezig is door de volgende PowerShell-opdracht uit te voeren:

Test-Path -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'

Als het resultaat True is, bestaat de sleutel of container. Maar wat als je een waarde of invoer moet testen? Laten we een aangepaste functie voor deze test maken:

Function Test-RegistryValue ($regkey, $name) {
     if (Get-ItemProperty -Path $regkey -Name $name -ErrorAction Ignore) {
         $true
     } else {
         $false
     }
 }

Met de aangepaste functie voer je een pad en naam van de sleutel of container in, en de waarde die je zoekt, en de aangepaste functie zal True of False (3) retourneren zoals weergegeven in de onderstaande screenshot:

Enter a key and value to test and return True or False

Volgende stappen

Weet dat je Get-ChildItem, Get-ItemProperty en Get-ItemPropertyValue in PowerShell kunt gebruiken om een registerwaarde en sleutels te krijgen, wat kun je nog meer doen?

Als je meer wilt leren over werken met het register met PowerShell, bekijk dan het artikel van Microsoft Docs getiteld ‘Werken met registervermeldingen’. Je kunt ook een geweldige demonstratie vinden van het instellen van registerwaarden in de ATA-blogpost Gebruik van Active Setup: Hoe een registerwaarde instellen in alle gebruikerskluizen.

Source:
https://adamtheautomator.com/powershell-to-get-a-registry-value/