2016-07-18 22 views
1

Ich habe dieses Objekt in Powershell, die ich von einer Abfrage für den SSRS Web Service erhalten:Wie erhalten Sie Informationen über Eigenschaften von Powershell-Objekt?

$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;} 

Wenn ich die DS-Objekt $ Liste:

$ds|fl 

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

Was ich brauche, ist der Wert von "

Artikel ", der tatsächlich als der Typ eines in" Artikel "gespeicherten Objekts erscheint. Ich habe versucht, $ ds.Item einem neuen Objekt zuzuordnen, aber es verwandelt sich einfach in ein benutzerdefiniertes Powershell-Objekt und all diese Informationen verschwinden. Ich habe verschiedene Kombinationen von GetType ausprobiert, ohne Erfolg. Letztlich müssen, was ich ist der letzte Teil:

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

die die "DataSourceReference" string ist. Dieser Teil kann zwei Werte haben, "DataSourceReference" oder "DataSourceDefinition", und ich muss dies testen, um den Code zu bestimmen, der als nächstes ausgeführt werden soll.

Relativ Neuling zu Powershell und dieser ist ein bisschen stumpf für mich. Jede Hilfe wird sehr geschätzt.

+0

was bedeutet '$ ds | select -expand Artikel zurückgeben? –

+0

Perfekt !!! Willst du als Antwort posten, damit ich es markieren kann? –

+0

Sicher. Froh, dass es funktioniert hat :) –

Antwort

0

erweitern Sie einfach die Item mit Select-Object:

$ds | select -expand Item 
0

Ich weiß nicht genau, was Sie brauchen, aber man könnte auch eigene PSCustomObject wie folgt erstellen:

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

Zuerst wählen Sie die PropertyName und dann die PropertyValue, die alles sein, die Sie mögen . Hoffentlich hilft dir das weiter.