Skip to content

Issue when a Property Key has no value set #1

Open
@Rapidhands

Description

@Rapidhands

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

Metadata

Metadata

Labels

backlogIssue is in queue to be worked on or analyzed

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions