当我在 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虽然我明确使用PSObjectas-TypeNameat$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()