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

时间:2016-07-18 12:06:01

标签: powershell object definition

我在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的相对新手,这个对我来说有点迟钝。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

只需使用Item展开Select-Object

$ds | select -expand Item

答案 1 :(得分:0)

我不确切地知道您需要什么,但您也可以像这样创建自己的自定义PSCustomObject

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

首先,您选择PropertyName,然后选择PropertyValue,这可以是您喜欢的任何内容。希望这可以帮助你。