![](/img/trans.png)
[英]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.