Powershell has a great CMDLET called Test-Path that can check to see if a registry key exists but unfortunately it does not have the ability to check for registry values. In order to get around this, I created the following function to check to see if a registry value exists. This can be extremely useful when you are using a registry key to verify if a script has already executed in the past.
Examples:
Test-RegValue -Key “HKCU:\Control Panel\Desktop” -Value WallPaper
Test-RegValue -Key “HKLM:\SOFTWARE\Custom” -Value Test
Function Test-RegValue {
<#
.SYNOPSIS
Determine if a registry value exists
.PARAMETER Key
Provide registry key path
.PARAMETER Value
Provide registry value that you would like to test
.EXAMPLE
Test-RegValue -Key "HKCU:\Control Panel\Desktop" -Value WallPaper
.EXAMPLE
Test-RegValue -Key "HKLM:\SOFTWARE\Custom" -Value Test
#>
param (
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]$Value,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]$Key
)
$ValueExist = (Get-ItemProperty $Key).$Value -ne $null
Return $ValueExist
}
Post your questions in the comments below!

Thomas
I’m teaching myselft PS and still not clear on how these functions work, if i was looking for value “X” in the following key “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\KeyManagementServiceName”
in order for me to get a result I would just have to modify the scritpt with the following code at the top?
$key = “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\KeyManagementServiceName”
$Value = “x”
Jose Espitia
Thomas,
The great thing about functions is that you do not need to edit the code inside of them. For your example, you can use:
Test-RegValue -Key “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\KeyManagementServiceName” -Value X
Hope this helps!
Josh
THANK YOU!!
Jose Espitia
Glad that I could help Josh 🙂
samaddu
Thank you Josh … it was helpful.. Thank you and God bless!