2016-03-15 78 views
1

我正在使用Exchange Server 2013通讯组和ArrayList。将对象添加到ArrayList导致对象的属性转换类型

$groups = @() 
$groups += Get-DistributionGroup "groupName" 
foreach($group in $groups) 
... 

我试图提取$group.ManagedBy属性,它是一个ADMultiValuedProperty,但是在我的剧本,ManagedBy被转换成一个ArrayList,我失去​​的ManagedBy,因为它(属性如$group.ManagedBy.Name是空白何时应该有价值)。为什么会发生这种类型转换?

+0

您在其中一台Exchange服务器或实际EMS外壳上使用远程管理会话吗? – mjolinor

+0

尽管ISE通过远程会话,虽然直接发生在Exchange服务器上。理想情况下,我希望在可能的情况下使用远程会话。 –

+0

远程会话会产生反序列化的对象,这会导致保真度的降低。没有解决方法,我知道,你只需要解决它。 – mjolinor

回答

1

你所看到的是使用远程管理会话的结果。从远程会话返回的对象通过序列化/反序列化过程,并且剩下一个反序列化的对象。序列化只保持有限深度的保真度,因此可能会丢失嵌套在基础对象属性中的对象的某些属性。你也将失去对象方法。

当您手动序列化和反序列化对象(使用export/import-clixml)时,您可以指定要保持的保真度深度,但据我所知,这对于远程处理使用的序列化过程是固定的,并且没有办法改变它。你只需要学会期待它,并围绕它进行编码。