2013-03-07 66 views
8

比如我有兩個特性PSObject交易:ID和transactionName,所以它看起來像: 交易{ ID:123 transactionName:tranName1 }訪問PSObject財產名在C#

和我如果其名稱爲tranName1,則要返回該事務的標識。

在我看來,在PowerShell腳本,我們可以簡單地這樣做:

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

但是在C#它會給錯誤,因爲它無法通過名稱識別屬性...任何想法如何做到這一點的C#?

+0

可能是因爲屬性名稱是'transactionName'? – 2013-03-07 17:54:01

+0

@ p.s.w.g即使我更正了它的名稱也不行,因爲C#知道交易爲PSObject,它不包含「transactionName」的成員... – jamesdeath123 2013-03-07 18:31:52

+0

沒有發佈C#代碼。無論如何,只要找到類型,然後[*查看文檔*](http://msdn.microsoft.com/en-us/library/system.management.automation.psobject.aspx)以獲取有關如何使用的基本概念但是,我懷疑使用正確類型的「事務」值開始會更有用。 – 2013-03-07 18:46:56

回答

18

嘗試這樣:

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

它伎倆!非常感謝! – jamesdeath123 2013-03-07 19:11:41

+0

我知道這是一箇舊的回覆,但是,子屬性,例如:$ transaction.transactionName.propertyA – Roberto 2016-06-21 15:29:06

+0

@Roberto如果'propertyA'是一個PSObject,你可以這樣做:'((PSObject)psobjectvariable.Properties [「transactionName 「]。價值)的.properties [」 propertyA「]' – AstralisSomnium 2016-08-25 07:17:23