当我听说MSDN上的冷性能和方法 of PSObjects时,我认为尝试它们是很酷的。
我就是这么做的:
首先,我创建了一个PSObject类型的新实例。
然后,我使用Get成员查找了所有那些很酷的成员(但他们不在那里):
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成员告诉我,我的对象是TypeName( PSCustomObject )而不是PSObject。而PSCustomObject没有所有这些酷成员。
但我不想让$plainObj成为一种PSCustomObject --我希望它是一种PSObject。
我的问题:
$plainObj是一种PSCustomObject,尽管我在$plainObj New-Object PSObject中显式地使用了PSObject作为-TypeName?有什么想法吗?$plainObj成为一种PSObject而不是一种PSCustomObject@RussC,即使我使用了您的脚本--这就是结果: PS .> $plainObj =新对象PSObject -property @{ title = 'fridojet‘};加入-成员$plainobj -MemberType NoteProperty -Name Colour -Value .> -Value.> $plainObj TypeName: System.Management.Automation.PSCustomObject Name MemberType Definition?
@RussC现在我设法创建了一个不属于
PSCustomObject的对象: PS .>新对象 但即使如此,我也无法创建一个PSObject(带有BaseObject属性等等): PS .> PSObject::AsPSObject((新对象对象))\x Get成员TypeName: System.Object Name MemberType定义
发布于 2012-06-07 23:35:09
我相信它没有什么好报告的,因为它没有包装任何东西。
如果您创建一个新的PSObject而不包装另一个对象,或者提供任何默认成员,那么它将创建一个PSCustomObject。
正如MSDN对PSCustomObject的声明:“充当占位符对象,当使用没有参数的PSObject构造函数时使用。”
例如,如果您这样做:
$plainObj = New-Object PSObject -property @{ title = 'fridojet' }
$plainObj | Add-Member -MemberType NoteProperty -Name Colour -Value Blue那么$plainObj应该是PSObject。
因为PSObject是一个静态的转换调用,
$date = Get-Date
$pso = PSObject.AsPSObject($date)或
$obj = New-Object object -property @{ title = "fridojet" }
$pso = PSObject.AsPSObject($obj)另一方面,BaseObject返回PSObject的基本类型。
使用上面的第二个例子:
$obj = New-Object object -property @{ title = "fridojet" }
$pso = PSObject.AsPSObject($obj)
$end = $pso.BaseObject在这种情况下,$end应该是对象,而不是PSObject;如果使用Get-Date对象,$end应该是DateTime类型。
我希望使用这种方法可以返回一种类型的PSObject,而不是PSCustomObject。
然而,这些属性和方法的优势是值得怀疑的。使用PSObject包装器的主要原因是当您在许多.NET类周围传递对象时。
如果你只是做实验,那么它不会给你任何你不知道的东西。
这篇博文展示了您使用PSObject的一些原因,特别是在通过.NET类迭代许多对象的场景中:http://cjoprey.wordpress.com/archived/custom-object-gotchas/
https://stackoverflow.com/questions/10941186
复制相似问题