Bird
Raised Fist0
PowerShellscripting~5 mins

Registry operations in PowerShell

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

The Windows registry stores important settings for your computer and programs. Registry operations let you read, add, change, or remove these settings using scripts.

You want to check if a program is installed by reading its registry key.
You need to change a system setting automatically for many computers.
You want to add a new configuration for an application without opening its interface.
You want to clean up old or unused registry entries to keep the system tidy.
Syntax
PowerShell
Get-ItemProperty -Path <RegistryPath> [-Name <PropertyName>]
Set-ItemProperty -Path <RegistryPath> -Name <PropertyName> -Value <NewValue>
New-Item -Path <RegistryPath> [-Name <NewKeyName>]
Remove-Item -Path <RegistryPath> [-Recurse]

Get-ItemProperty reads values from a registry key.

Set-ItemProperty changes or adds a value inside a registry key.

New-Item creates a new registry key.

Remove-Item deletes a registry key or value.

Examples
Reads the 'Shell Folders' value from the current user's Explorer settings.
PowerShell
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer' -Name 'Shell Folders'
Sets or creates the 'Setting1' value to 'Enabled' under 'MyApp' key.
PowerShell
Set-ItemProperty -Path 'HKCU:\Software\MyApp' -Name 'Setting1' -Value 'Enabled'
Creates a new registry key called 'NewFeature' inside 'MyApp'.
PowerShell
New-Item -Path 'HKCU:\Software\MyApp\NewFeature'
Deletes the 'OldFeature' key and all its subkeys and values.
PowerShell
Remove-Item -Path 'HKCU:\Software\MyApp\OldFeature' -Recurse
Sample Program

This script creates a new registry key under the current user, sets a value, reads it back to confirm, then deletes the key to clean up.

PowerShell
Write-Output "Creating a new registry key and setting a value..."
New-Item -Path 'HKCU:\Software\DemoApp' -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path 'HKCU:\Software\DemoApp' -Name 'DemoSetting' -Value 'TestValue'
$value = Get-ItemProperty -Path 'HKCU:\Software\DemoApp' -Name 'DemoSetting'
Write-Output "Value read from registry: $($value.DemoSetting)"
Write-Output "Cleaning up by removing the DemoApp key..."
Remove-Item -Path 'HKCU:\Software\DemoApp' -Recurse
Write-Output "Done."
OutputSuccess
Important Notes

Always be careful when changing the registry. Wrong changes can cause system problems.

Use -ErrorAction SilentlyContinue to avoid errors if a key already exists.

Run PowerShell as administrator if you need to change system-wide registry keys (like HKLM).

Summary

Registry operations let you automate reading and changing Windows settings.

Use Get-ItemProperty to read, Set-ItemProperty to write values.

Create or delete keys with New-Item and Remove-Item.

Practice

(1/5)
1. What PowerShell cmdlet is used to read a value from the Windows registry?
easy
A. Remove-Item
B. Set-ItemProperty
C. New-Item
D. Get-ItemProperty

Solution

  1. Step 1: Understand cmdlet purposes

    Get-ItemProperty reads registry values, Set-ItemProperty writes values, New-Item creates keys, Remove-Item deletes keys.
  2. Step 2: Identify reading operation

    Since the question asks about reading, Get-ItemProperty is the correct cmdlet.
  3. Final Answer:

    Get-ItemProperty -> Option D
  4. Quick Check:

    Read registry value = Get-ItemProperty [OK]
Hint: Reading registry uses Get-ItemProperty cmdlet [OK]
Common Mistakes:
  • Confusing Set-ItemProperty as reading cmdlet
  • Using New-Item or Remove-Item which manage keys, not values
  • Trying to read with Remove-Item
2. Which of the following is the correct syntax to set a registry value named TestValue to 123 under HKCU:\Software\MyApp?
easy
A. Get-ItemProperty -Path 'HKCU:\Software\MyApp' -Name 'TestValue' -Value 123
B. Set-ItemProperty -Path 'HKCU:\Software\MyApp' -Value 'TestValue' -Name 123
C. Set-ItemProperty -Path 'HKCU:\Software\MyApp' -Name 'TestValue' -Value 123
D. New-Item -Path 'HKCU:\Software\MyApp' -Name 'TestValue' -Value 123

Solution

  1. Step 1: Identify correct cmdlet and parameters

    Set-ItemProperty sets a registry value. The parameters are -Path for key, -Name for value name, and -Value for the data.
  2. Step 2: Check parameter order and names

    Set-ItemProperty -Path 'HKCU:\Software\MyApp' -Name 'TestValue' -Value 123 correctly uses -Path, -Name, and -Value in proper order. Other options mix parameters or use wrong cmdlets.
  3. Final Answer:

    Set-ItemProperty -Path 'HKCU:\Software\MyApp' -Name 'TestValue' -Value 123 -> Option C
  4. Quick Check:

    Set-ItemProperty syntax = Set-ItemProperty -Path 'HKCU:\Software\MyApp' -Name 'TestValue' -Value 123 [OK]
Hint: Set-ItemProperty uses -Name for value and -Value for data [OK]
Common Mistakes:
  • Swapping -Name and -Value parameters
  • Using Get-ItemProperty to set values
  • Using New-Item which creates keys, not values
3. What will be the output of this PowerShell command?
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer' -Name 'ShellState'
medium
A. Creates a new registry key named 'ShellState'
B. Displays the value of 'ShellState' property from the specified registry key
C. Deletes the 'ShellState' value from the registry key
D. Throws an error because 'ShellState' is not a valid cmdlet

Solution

  1. Step 1: Understand Get-ItemProperty behavior

    This cmdlet reads the value of a property from a registry key.
  2. Step 2: Analyze the command

    The command reads the 'ShellState' value from the given registry path and outputs it.
  3. Final Answer:

    Displays the value of 'ShellState' property from the specified registry key -> Option B
  4. Quick Check:

    Get-ItemProperty reads registry values [OK]
Hint: Get-ItemProperty outputs registry value data [OK]
Common Mistakes:
  • Thinking it creates or deletes keys
  • Confusing property name with cmdlet name
  • Expecting an error for valid property
4. You run this command to delete a registry key:
Remove-Item -Path 'HKCU:\Software\MyApp'

But it fails with an error saying the key is not empty. How can you fix this?
medium
A. Add the parameter -Recurse to delete all subkeys
B. Use Remove-ItemProperty instead
C. Run New-Item to recreate the key first
D. Change the path to HKLM:\Software\MyApp

Solution

  1. Step 1: Understand Remove-Item behavior

    Remove-Item cannot delete a key if it has subkeys unless -Recurse is used.
  2. Step 2: Apply -Recurse parameter

    Adding -Recurse deletes the key and all its subkeys, fixing the error.
  3. Final Answer:

    Add the parameter -Recurse to delete all subkeys -> Option A
  4. Quick Check:

    Remove-Item -Recurse deletes key with subkeys [OK]
Hint: Use -Recurse with Remove-Item to delete keys with subkeys [OK]
Common Mistakes:
  • Using Remove-ItemProperty which deletes values, not keys
  • Trying to recreate key before deleting
  • Changing registry hive path without reason
5. You want to create a new registry key HKCU:\Software\MyApp\Settings only if it does not exist. Which script snippet correctly does this?
hard
A. if (-not (Test-Path 'HKCU:\Software\MyApp\Settings')) { New-Item -Path 'HKCU:\Software\MyApp' -Name 'Settings' }
B. New-Item -Path 'HKCU:\Software\MyApp\Settings' -Force
C. Set-ItemProperty -Path 'HKCU:\Software\MyApp\Settings' -Name 'Exists' -Value $true
D. Remove-Item -Path 'HKCU:\Software\MyApp\Settings' -ErrorAction SilentlyContinue

Solution

  1. Step 1: Check if key exists using Test-Path

    Test-Path returns true if the registry key exists, so -not negates it to check non-existence.
  2. Step 2: Create key only if missing

    New-Item creates the 'Settings' key under 'MyApp' only if it does not exist, avoiding errors.
  3. Final Answer:

    if (-not (Test-Path 'HKCU:\Software\MyApp\Settings')) { New-Item -Path 'HKCU:\Software\MyApp' -Name 'Settings' } -> Option A
  4. Quick Check:

    Use Test-Path before New-Item to avoid duplicates [OK]
Hint: Use Test-Path to check key before creating with New-Item [OK]
Common Mistakes:
  • Using New-Item with -Force creates or overwrites without check
  • Using Set-ItemProperty to create keys (it sets values)
  • Deleting key instead of creating it