gpt4 book ai didi

powershell - 奇怪的获取项行为

转载 作者:行者123 更新时间:2023-12-02 23:08:48 25 4
gpt4 key购买 nike

如果我只是做

Get-Item "HKLM:\SOFTWARE\MozillaPlugins\@microsoft.com/GENUINE"

我在控制台上得到这个
NAME
----
@microsoft.com/GENUINE

但是这个
$test = Get-Item "HKLM:\SOFTWARE\MozillaPlugins\@microsoft.com/GENUINE"
Write-Host "$($test.name)"

返回完整路径,而不仅仅是键名。

这是一个错误吗?预期的行为?我做错了什么?

最佳答案

Is this a bug? Intended behavior? Me doing something incorrectly?



中间一个。

PowerShell格式化文件(默认情况下位于 $pshome定义的目录中的* .format.ps1xml)在此处说明了不同之处。在默认输出方案中,PowerShell将检查给定对象类型的已知格式定义,这些格式定义是从上述文件加载的。如果存在,它将使用那些来控制哪些数据以及如何输出该数据。

因此,就您而言,您有 Microsoft.Win32.RegistryKey对象。其格式定义存储在Registry.format.ps1xml中。只是要显示该文件的截断部分,所以您可以看到如何创建您的最佳示例。

 .... output truncated ....
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Width>30</Width>
<Label>Name</Label>
</TableColumnHeader>
<TableColumnHeader>
<Label>Property</Label>
</TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<Wrap/>
<TableColumnItems>
<TableColumnItem>
<PropertyName>PSChildName</PropertyName>
.... output truncated ....

因此,这定义了一个包含两列的输出表:名称,属性。名称列实际上是对象pschildname属性。这与对象的实际名称属性是分开的。这就是为什么您得到上面看到的差异的原因。

PS世界中也存在这种误解的其他示例。你知道的越多。

格式化文件的首选资源为 about_format.ps1xml。如果您对默认格式有疑问,但对简单的 Select-Object不满意,则可以从副本创建自己的副本。

FWIW您可以通过执行以下操作找到这两个属性
Get-Item "HKLM:\SOFTWARE\MozillaPlugins\@microsoft.com/GENUINE" |  Format-List *

那将强制显示所有属性,并且您将看到 namepschildname

关于powershell - 奇怪的获取项行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50623985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com