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!