如何从 Powershell 对象获取 属性 信息?

How to get property info from Powershell object?

我在 Powershell 中有这个对象,它是我从针对 SSRS Web 服务的查询中获得的:

$ds|gm


TypeName: Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3tServer_ReportService2010_asmx.DataSource

Name        MemberType Definition
----        ---------- ----------

Equals      Method     bool Equals(System.Object obj)                    
GetHashCode Method     int GetHashCode()
GetType     Method     type GetType()
ToString    Method     string ToString()
Item        Property   Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3tServer_ReportService2010_asmx.DataSourceDe...
Name        Property   string Name {get;set;} 

如果我列出 $ds 对象:

$ds|fl

Name : AHPUsersData
Item : Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3tServer_ReportService2010_asmx.DataSourceReference

我需要的是 "Item" 的值,它实际上看起来是存储在 "Item" 中的对象的类型。我尝试将 $ds.Item 分配给一个新对象,但它只是变成了一个 Powershell 自定义对象,所有信息都消失了。我尝试了 GetType 的各种组合但没有成功。最终我需要的是最后一部分:

Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3tServer_ReportService2010_asmx.DataSourceReference

这是 "DataSourceReference" 字符串。这部分可以有两个值,"DataSourceReference" 或 "DataSourceDefinition",我需要测试它以确定接下来要执行的代码。

Powershell 的相对新手,这个对我来说有点迟钝。非常感谢任何帮助。

我不知道你到底需要什么,但你也可以像这样创建自己的自定义 PSCustomObject

[PSCustomObject]@{
    Name                = $ds.Name
    DataSourceReference = $ds.Item.DataSourceReference
    SomethingElse       = $ds.Item | Select-Object -ExpandProperty DataSourceReference
}

首先你 select PropertyName 然后 PropertyValue,可以是任何你喜欢的。希望这对你有所帮助。

只需将 Item 扩展为 Select-Object:

$ds | select -expand Item