Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过远程会话将Exchange命令行管理程序与C#一起使用时防止反序列化_C#_Powershell_Serialization_Deserialization_Exchange Server - Fatal编程技术网

通过远程会话将Exchange命令行管理程序与C#一起使用时防止反序列化

通过远程会话将Exchange命令行管理程序与C#一起使用时防止反序列化,c#,powershell,serialization,deserialization,exchange-server,C#,Powershell,Serialization,Deserialization,Exchange Server,在我的文章中,当直接在Exchange命令行管理程序(EMS)中执行脚本与通过C#Powershell远程会话执行脚本时,出现了什么问题?结论是对象正在序列化 例如,ADIdentity对象现在只是一个包含规范DN的字符串。当我需要执行更复杂的脚本时,这使得编码变得更加困难 剧本: $FwdingMBs = Get-Mailbox -Filter {ForwardingAddress -ne $null -or ForwardingSmtpAddress -ne $null} foreach

在我的文章中,当直接在Exchange命令行管理程序(EMS)中执行脚本与通过C#Powershell远程会话执行脚本时,出现了什么问题?结论是对象正在序列化

例如,
ADIdentity
对象现在只是一个包含规范DN的字符串。当我需要执行更复杂的脚本时,这使得编码变得更加困难

剧本:

$FwdingMBs = Get-Mailbox -Filter {ForwardingAddress -ne $null -or ForwardingSmtpAddress -ne $null}

foreach ($mb in $FwdingMBs) {
  [string]$Name = $mb.DisplayName
  [string]$fwdAddress = "";

  if ($mb.ForwardingAddress -ne $null) {
    [string]$fwdAddress = (Get-ADObject -Identity $(($mb.ForwardingAddress).DistinguishedName) -Properties mail).mail
  }

  $properties = @{
        Name = $Name
        ContactAddress = $fwdAddress
        DeliverToMailboxAndForward = $mb.DeliverToMailboxAndForward
        }
        $o = New-Object psobject -Property $properties;

        # Dit zet het object bruikbaar als object in c#
        Write-Output $o

  }
我正在运行Exchange 2019,希望接收每个邮箱的转发设置。。。在EMS中运行脚本,它运行良好。。然而,通过C#powershell,它无法从
$mb.ForwarindAddress
中获取
DifferentizedName
,因为该属性现在已变成字符串,而不是对象

因此,我的第一个问题是,如何编写这个脚本,使我仍然能够接收代表邮件转发对象的ADIdentity对象的邮件地址

第二个问题是,有没有办法防止序列化?所以我在谷歌上搜索了一下,因为答案是否定的,但我发现有人说:

在一些挖掘之后,我尝试在打开PSSession之前手动加载Exchange程序集。相同的结果,字符串的集合

在(再次)挖掘之后,我使用以下命令加载了程序集和exchange.types.ps1xml文件:

updatetypedata-PrependPath($path+“exchange.types.ps1xml”)

就这样!我得到了完整的对象集合

即使这不是我想要的,我也可以将Exchange程序集加载到我的C#应用程序中,但目前我不知道如何从中更新类型数据

所以我的第二个问题来了:这个人是否设法解决了这个问题并接收到了完整的反序列化对象?论坛上的帖子已经存档,所以我无法回复。。。我在任何地方都找不到this
exchange.types.ps1xml
文件。有人知道他耍的把戏吗?在哪里可以找到这个文件