簡體   English   中英

如何獲取包含反序列化對象列表的Cmdlet結果的屬性(多值屬性)(從C#執行Powershell cmdlet)

[英]How to get the properties of Cmdlet results which contain list of deserialized objects (multi-valued properties)(executing powershell cmdlets from c#)

我正在使用c#執行PowerShell cmdlet並分析cmdlet結果(Collection []。Properties [“ PropertyName”]。value)以獲取所需的值。

但是其中一些結果包含反序列化對象的列表。 但是PowerShell只是將它們轉換為對象的ArrayList,而我無法獲取它們的所有屬性。

例如:Exchange命令行管理程序cmdlet的Get-MailboxDatabase返回Exchange服務器(集合)上的郵箱數據庫列表。 我可以從PSObject.Properties [“ PropertyName”]。Value獲取屬性,例如名稱,服務器等。

它還包含數據庫副本的列表(如下所示)

類MailboxDatabase {DatabaseCopy [] DatabaseCopies; }

PSObject.Properties [“ DatabaseCopies”]。Value只是對象的arrayList。

但是所有的DatabaseCopy屬性都不會反序列化(或者-我不確定如何獲取它們)。

我只能看到名稱(從arraylists列表中的DatabaseCopy的字符串)。

誰能幫助我如何獲得多值結果的所有反序列化屬性?

有關更多詳細信息,請查看: 如何在C#中以編程方式從MailboxDatabase獲取數據庫副本(在C#中包裝ExchangeMangementShell cmdlet)?

問候,夢想家

即使從PowerShell,它們也以純字符串形式出現。

PS C:\> $md.type
PS C:\> $md.DatabaseCopies.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     ArrayList                                System.Object


PS C:\> $md.DatabaseCopies[0].gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

PS C:\> $md.gettype()
Method invocation failed because [Deserialized.Microsoft.Exchange.Data.Directory.SystemConfiguration.MailboxDatabase] doesn't contain a method named 'gettype'.

所以,看來我別無選擇。 我將為我的用例尋找解決方法。

cmdlet應該返回PSObject或PSObject列表。

我認為DatabaseCopies沒有序列化,只是設置為純字符串。 因此它們不能反序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM