将对象添加到 ArrayList 导致对象的 属性 转换类型
Adding Object to ArrayList Causes Object's Property to Convert Type
我正在使用 Exchange Server 2013 通讯组和 ArrayList。
$groups = @()
$groups += Get-DistributionGroup "groupName"
foreach($group in $groups)
...
我正在尝试提取 $group.ManagedBy
属性,这是一个 ADMultiValuedProperty
,但是在我的脚本中,ManagedBy
正在被转换成一个 ArrayList,并且因为它,我失去了 ManagedBy
的属性(例如 $group.ManagedBy.Name
在应该有值的时候是空白的)。为什么会发生这种类型转换?
您所看到的是使用远程管理会话的结果。从远程会话返回的对象会经过一个 serialization/deserialization 过程,您会得到一个反序列化的对象。序列化仅在有限的深度内保持保真度,因此您可能会丢失嵌套在基础对象属性中的对象的某些属性。您还将丢失对象方法。
当您手动序列化和反序列化对象(使用 export/import-clixml)时,您可以指定要保持的保真度深度,但据我所知,这对于远程处理使用的序列化过程是固定的,并且没有改变它的方法。你只需要学会期待它并围绕它进行编码。
我正在使用 Exchange Server 2013 通讯组和 ArrayList。
$groups = @()
$groups += Get-DistributionGroup "groupName"
foreach($group in $groups)
...
我正在尝试提取 $group.ManagedBy
属性,这是一个 ADMultiValuedProperty
,但是在我的脚本中,ManagedBy
正在被转换成一个 ArrayList,并且因为它,我失去了 ManagedBy
的属性(例如 $group.ManagedBy.Name
在应该有值的时候是空白的)。为什么会发生这种类型转换?
您所看到的是使用远程管理会话的结果。从远程会话返回的对象会经过一个 serialization/deserialization 过程,您会得到一个反序列化的对象。序列化仅在有限的深度内保持保真度,因此您可能会丢失嵌套在基础对象属性中的对象的某些属性。您还将丢失对象方法。
当您手动序列化和反序列化对象(使用 export/import-clixml)时,您可以指定要保持的保真度深度,但据我所知,这对于远程处理使用的序列化过程是固定的,并且没有改变它的方法。你只需要学会期待它并围绕它进行编码。