我在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的相对新手,这个对我来说有点迟钝。非常感谢任何帮助。
答案 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
,这可以是您喜欢的任何内容。希望这可以帮助你。