2013-03-07 14 views
8

Na przykład mam transakcji PSObject z dwóch właściwości: id i transactionName tak, że wygląda następująco: transakcji { ID: 123 transactionName: tranName1 }właściwość dostępu PSObject nazwy C#

i chcesz zwrócić identyfikator transakcji, jeśli jej nazwa to tranName1.

Wydaje mi się, że skrypty PowerShell, możemy po prostu zrobić:

if $transaction.transactionName -eq tranName return $transaction.id 

jednak w C# to daje błąd, ponieważ nie można uznać właściwość o nazwie ... jakieś pomysły jak to zrobić w do#?

+0

Być może dlatego, że nazwa właściwości jest 'transactionName'? –

+0

@ p.s..g.g nawet ja poprawiłem nazwę, która nie będzie działać, ponieważ C# zna transakcję jako PSObject, który nie zawiera elementu "transactionName" ... – jamesdeath123

+0

Nie ma opublikowanego kodu C#. W każdym razie, po prostu znajdź typ, następnie [* spójrz na dokumentację *] (http://msdn.microsoft.com/en-us/library/system.management.automation.psobject.aspx), aby uzyskać podstawowe informacje o tym, jak używać to ... jednak podejrzewam, że używanie poprawnie wpisanej wartości "transakcji" byłoby bardziej użyteczne. –

Odpowiedz

18

spróbować czegoś takiego:

psobjectvariable.Properties["transactionName"].Value 
+0

to działa! wielkie dzięki! – jamesdeath123

+0

Wiem, że jest to stara odpowiedź, ale co z podtekstami, na przykład: $ transaction.transactionName.propertyA – Roberto

+0

@Roberto Jeśli 'propertyA' to PSObject, możesz zrobić tak:' ((PSObject) psobjectvariable.Properties ["transactionName "] .Value) .Properties [" propertyA "]' – AstralisSomnium