none
在Powershell中执行部分Exchange命令报错 RRS feed

  • 问题

  • 最近公司准备升级Exchange 2016,我们一个账号管理系统是通过powershell命令来执行一些操作的,在测试过程中发现在Powershell中通过先执行Add-PSSnapin Microsoft.Exchange*命令然后再执行New-Moverequest命令时会报错,而其他诸如Get-Mailbox命令则没有问题,请问这是怎么回事?同样的方式在当前的Exchange 2010环境下则是正常的。

    执行powershell命令的是一台加入域并安装Exchange管理工具的机器,并非Exchange服务器。在Exchange服务器上没有此问题。

    命令执行后报错信息如下:

    New-MoveRequest : The type initializer for 'Microsoft.Exchange.MailboxReplicationService.RequestJobLog' threw an exception.
    At line:1 char:1
    + New-MoveRequest -Identity 'linktest\t90001' -TargetDatabase DB001
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [New-MoveRequest], TypeInitializationException
        + FullyQualifiedErrorId : System.TypeInitializationException,Microsoft.Exchange.Management.Migration.MailboxReplication.MoveRequest.NewMoveRequest

    2019年5月7日 5:43

答案

  • 您好,

    据我所知,通过Add-PSSnapin添加Exchange 2010/2013/2016的snap-in是不支持的,您可以尝试以下命令:

    $UserCredential = Get-Credential
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<ServerFQDN>/PowerShell/ -Authentication Kerberos -Credential $UserCredential
    
    Import-PSSession $Session -DisableNameChecking

    您可以通过以下文章了解更多详情:

    使用远程 PowerShell 连接到 Exchange 服务器

    此致,

    Steve Fan


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.

    2019年5月7日 8:43
    版主

全部回复

  • 您好,

    据我所知,通过Add-PSSnapin添加Exchange 2010/2013/2016的snap-in是不支持的,您可以尝试以下命令:

    $UserCredential = Get-Credential
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<ServerFQDN>/PowerShell/ -Authentication Kerberos -Credential $UserCredential
    
    Import-PSSession $Session -DisableNameChecking

    您可以通过以下文章了解更多详情:

    使用远程 PowerShell 连接到 Exchange 服务器

    此致,

    Steve Fan


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.

    2019年5月7日 8:43
    版主
  • 非常感谢,我在日常运维的时候也是通过这种远程PS方式执行命令,但是这种方式貌似过一段时间会超时需要重新执行,这样的话应用系统会有问题,如何避免超时的问题呢?
    2019年5月8日 1:05
  • 您好,

    您可以通过IdleTimeout参数延长超时的时限:

    $PSOptions = New-PSSessionOption -IdleTimeout 900000
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<ServerFQDN>/PowerShell/ -Credential $UserCredential -Authentication Kerberos -SessionOption $PSOptions

    您可以参考这篇文章了解更多信息:New-PSSessionOption

    此致,

    Steve Fan


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.

    2019年5月8日 9:33
    版主
  • 非常感谢,问题解决了!
    2019年5月9日 1:58
  • 很高兴听到您的问题已经解决了。能否请您将对您有帮助的回复标记为答案以关闭本贴?这样也可以帮助其他遇到相同问题的论坛用户,在看到您帖子的时候,可以快速地找到行之有效的解决方案。感谢您的理解与支持!

    此致,

    Steve Fan


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.


    2019年5月9日 2:02
    版主
  • 嗨,感谢您的分享,这非常有用,请问如何保存密码呢,目前执行脚本,每次都需要输入用户名密码
    2019年10月28日 11:07