[英]Is it possible to share properties and comments between Powershell cmdlets in c#?
[英]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.