当我在 MSDN 上听说了s的很酷的属性和方法PSObject
时,我想试试看会很酷。
这就是我所做的:
首先,我创建了一个新的 type 实例PSObject
。
然后我使用Get-Member寻找所有那些很酷的成员(但他们不在那里):
PS .> $plainObj = New-Object PSObject
PS .> $plainObj | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
问题:
没有BaseObject
属性——也没有AsPSObject()
方法。所有酷的成员都不在那里。但为什么?
Get-Member 告诉我我的对象是 kind ( TypeName
)PSCustomObject
而不是PSObject
。并且PSCustomObject
没有所有这些很酷的成员。
但我不想$plainObj
成为一种PSCustomObject
——我希望它成为一种PSObject
。
我的问题:
为什么是
$plainObj
一种PSCustomObject
虽然我明确使用PSObject
as-TypeName
at$plainObj New-Object PSObject
?任何想法?我怎样才能
$plainObj
成为一种PSObject
而不是一种PSCustomObject
?
@RussC即使我使用你的脚本 - 结果就是:
PS .> $plainObj = New-Object PSObject -property @{ title = 'fridojet' }; $plainObj | Add-Member -MemberType NoteProperty -Name Colour -Value Blue PS .> $plainobj | Get-Member TypeName: System.Management.Automation.PSCustomObject Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() Colour NoteProperty System.String Colour=Blue title NoteProperty System.String title=fridojet
@RussC现在我设法创建了一个不是类型的对象
PSCustomObject
:PS .> New-Object Object
但即便如此,我也无法创建一个
PSObject
(带有BaseObject
属性等):PS .> [PSObject]::AsPSObject((New-Object Object)) | Get-Member TypeName: System.Object Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString()