No powershell, é possível obter uma matriz de RegistryKeys
como segue:
$hkeys = Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Quando eu inspecionar o primeiro elemento desta matriz, é isso que eu recebo:
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
parecia um pouco estranho, então eu olhei mais para que:
> $hkeys[0].property.gettype
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array
Os elementos da property
atributo, uma vez que eles são delimitadas por dois pontos :
não parece ser cadeias de caracteres, então eu olhei um pouco mais, mas descobri que eles são, de fato, String
objetos:
> $hkeys[0].property[0].gettype
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
Desde que eles apareceram a ser objetos de cadeia de caracteres, eu tentei echo o primeiro. No entanto, ele mostra apenas a primeira parte da seqüência de caracteres e não a parte, após os dois-pontos:
> $hkeys[0].property[0]
DisplayName
Sinto que há algo fundamental que eu não entendo aqui. São os elementos da matriz realmente String
objetos? Se assim for, por que não vai a parte após os dois pontos aparecem?