En powershell, es posible obtener una matriz de RegistryKeys
de la siguiente manera:
$hkeys = Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Cuando me inspeccionar el primer elemento de esta matriz, esto es lo que obtengo:
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Name Property
---- --------
7-Zip DisplayName : 7-Zip 21.03 beta (x64)
DisplayVersion : 21.03 beta
DisplayIcon : C:\Program Files\7-Zip\7zFM.exe
InstallLocation : C:\Program Files\7-Zip\
UninstallString : "C:\Program Files\7-Zip\Uninstall.exe"
NoModify : 1
NoRepair : 1
EstimatedSize : 5237
VersionMajor : 21
VersionMinor : 3
Publisher : Igor Pavlov
Property
parecía un poco extraño, así que lo miré más allá, hacia:
> $hkeys[0].property.gettype
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array
Los elementos en la property
atributo, ya que están delimitados por dos puntos :
no parece, como cadenas, así que busqué un poco más, pero se encontró que de hecho están String
objetos:
> $hkeys[0].property[0].gettype
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
Ya que parecía ser objetos de cadena, traté de echo la primera. Sin embargo, sólo se muestra la primera parte de la cadena y no la parte después de los dos puntos:
> $hkeys[0].property[0]
DisplayName
Siento que hay algo fundamental que no entiendo aquí. Son los elementos de la matriz realmente String
los objetos? Si es así, ¿por qué no la parte después de los dos puntos aparecen?