PowerShell-Functions icon indicating copy to clipboard operation
PowerShell-Functions copied to clipboard

Issue when a Property Key has no value set

Open Rapidhands opened this issue 3 years ago • 2 comments

Hi Daniele, I've discover your function, and I've tested it. Let me show the error I have :

Get-Item @paramGetItem
    Hive: HKEY_CLASSES_ROOT

Name                           Property                                                                                                                                  
----                           --------                                                                                                                                  
search-ms                      (default)        : Windows Search Protocol                                                                                                
                               FriendlyTypeName : @C:\WINDOWS\explorer.exe,-6010                                                                                         
                               URL Protocol     :           

As you can see, the Property URL Protocol have no value set. Then, I have this error :

Exception lors de l'appel de « GetValueKind » avec « 1 » argument(s) : « La clé de Registre spécifiée n'existe pas. »
Au caractère Ligne:121 : 25
+                         [void]($returnData.Add([pscustomobject]@{
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : IOException

However the function returns the other parameters and their values.

Path         : HKEY_CLASSES_ROOT\search-ms
Name         : FriendlyTypeName
Value        : @%SystemRoot%\explorer.exe,-6010
Type         : ExpandString
Computername : LAPTOP-xxxx

Path         : HKEY_CLASSES_ROOT\search-ms
Name         : URL Protocol
Value        : 
Type         : String
Computername : LAPTOP-xxxx

I'm thinking you must add a test

# Append data to return array

                        if ($Null -eq $regItem.GetValueKind($property) ) { $Type = ""}
                        Else { $Type = $regItem.GetValueKind($property)}
                                               
                        [void]($returnData.Add([pscustomobject]@{
                                    'Path'  = $regItem
                                    'Name'  = $property
                                    'Value' = $regItem.GetValue($property, $null, 'DoNotExpandEnvironmentNames')
                                    'Type'  = $Type
                                    'Computername' = $env:computername
                                }))

But i've an error with the (default) parameter (no value, no type)

Exception lors de l'appel de « GetValueKind » avec « 1 » argument(s) : « La clé de Registre spécifiée n'existe pas. »
Au caractère Ligne:121 : 29
+ ...                if ($Null -eq $regItem.GetValueKind($property) ) { $Ty ...
+                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : IOException

But the display is OK

Path         : HKEY_CLASSES_ROOT\search-ms
Name         : (default)
Value        : 
Type         : 
Computername : LAPTOP-xxxx

Path         : HKEY_CLASSES_ROOT\search-ms
Name         : FriendlyTypeName
Value        : @%SystemRoot%\explorer.exe,-6010
Type         : ExpandString
Computername : LAPTOP-xxxx

Path         : HKEY_CLASSES_ROOT\search-ms
Name         : URL Protocol
Value        : 
Type         : String
Computername : LAPTOP-xxxx

Rapidhands avatar Jun 02 '22 10:06 Rapidhands

Display is OK but export to a file is KO (cause the previous error)

Rapidhands avatar Jun 02 '22 10:06 Rapidhands

Thanks for reporting this, please be patient as it is a really busy period and can take me a bit to react to look into this.

I am on the phone and can't see if you already did, but would you mind telling me the full key that is throwing the error? Just to have a reference on my dev machine without having to look for a key with the same characteristics.

PsCustomObject avatar Jun 03 '22 04:06 PsCustomObject