gpt4 book ai didi

powershell - 哪些对象适合添加成员?

转载 作者:行者123 更新时间:2023-12-04 13:18:12 27 4
gpt4 key购买 nike

文档状态:

Adds a user-defined custom member to an instance of a Windows PowerShell object.



“Windows PowerShell对象”代表什么?

这工作正常:
$obj = new-object system.object
$obj | add-member -membertype noteproperty -name Name -value "OK"
$obj.name

但这不是:
$obj = @{}

实际上,我正在尝试将属性添加到$ error [0]。

最佳答案

PowerShell具有所谓的PSObject,它是任何.NET对象(或可以是完全自定义的对象)的包装,并且当您调用Add-Member时,PowerShell会用PSObject隐式包装实际的.NET对象。

Add-Member的工作方式取决于您是否开始使用PSObject。如果您不是以PSObject开头的,则Add-Member将输入包装在PSObject中,您需要重新分配变量才能查看改编的对象。

因此,例如:

$x = [Environment]::OSVersion
$x | Add-Member NoteProperty IsVista $true
$x | Format-List # does not show the new property

这是因为未包装OSVersion的是PSObject。 Add-Member确实包装了它,但是包装器丢失了,因为您没有将$ x重新分配给包装的对象。与此行为对比:
$x = New-Object OperatingSystem ('Win32NT', '6.0')
$x | Add-Member NoteProperty IsVista $true
$x | Format-List # DOES show the new property

这是因为New-Object将新实例隐式包装在PSObject中。因此,您的Add-Member调用会将成员添加到现有包装器中。

回到第一个示例,可以通过将其更改为以下内容来使其按预期工作:
$x = [Environment]::OSVersion
$x = $x | Add-Member NoteProperty IsVista $true -PassThru
$x | Format-List # DOES show the new property

现在,毕竟,哈希表无法按您预期的方式工作是因为PowerShell对哈希表进行了特殊处理,并且哈希表的适配器基本上将键用作属性(kinda),而添加成员将无法按预期工作与这种对象。

关于powershell - 哪些对象适合添加成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/798258/

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