如何从 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
我在 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