【发布时间】:2022-01-02 04:29:40
【问题描述】:
在powershell中,可以得到RegistryKeys的数组,如下:
$hkeys = Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
当我检查这个数组的第一个元素时,我得到了:
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 似乎有点奇怪,所以我进一步研究了一下:
> $hkeys[0].property.gettype
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array
property属性中的元素,因为是用冒号分隔的,:看起来不像是字符串,所以我再看了一下,发现确实是String对象:
> $hkeys[0].property[0].gettype
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
因为它们似乎是字符串对象,所以我尝试回显第一个。但是,它只显示字符串的第一部分,而不是冒号后面的部分:
> $hkeys[0].property[0]
DisplayName
我觉得这里有些基本的东西我不明白。数组的元素真的是String 对象吗?如果是这样,为什么冒号后面的部分不会出现?
【问题讨论】:
标签: arrays string powershell object registry