gpt4 book ai didi

c# - C#Powershell-Exchange管理{“Value cannot be null.\r\nParameter name: serverSettings”}

转载 作者:行者123 更新时间:2023-12-03 01:12:41 27 4
gpt4 key购买 nike

我想通过C#项目与安装在计算机上的Microsoft.Exchange.Management.PowerShell.E2010进行交互。

我的本地计算机是Windows Server 2012 R2 Standard,并且安装了具有汇总更新14的Exchange Server 2010 SP3。

我正在使用4.5 .NET Framework(无法降级到较旧的版本)

        WSManConnectionInfo connectionInfo = new WSManConnectionInfo();

connectionInfo.OperationTimeout = 4 * 60 * 1000; // 4 minutes.
connectionInfo.OpenTimeout = 1 * 60 * 1000; // 1 minute.

Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
using (PowerShell ps = PowerShell.Create())
{
ps.Runspace = runspace;

ps.AddCommand("Add-PsSnapIn");
ps.AddArgument("Microsoft.Exchange.Management.PowerShell.E2010");

var results = ps.Invoke();

try
{
ps.AddCommand("Get-MailBox");

results = ps.Invoke();
}
catch (Exception e)
{

}
}
runspace.Close();
  • 我打开一个远程Shell session (定位在我的本地计算机上)。
  • 添加Exchange管理PsSnapIn,以便可以访问交换命令。
  • 最后,我执行我的Exchange管理命令。

  • \!/问题出在最后一步, results = ps.Invoke();抛出一个 System.Management.Automation.RemoteException和消息 "Value cannot be null.\r\nParameter name: serverSettings"

    你们有什么主意吗?

    感谢您的时间。

    最佳答案

    最近几天,我一直在为此奋斗。我知道这个问题还有几个月的时间了,但是我想我会分享我终于找到的解决方案。在您的.config中,您需要将useLegacyV2RuntimeActivationPolicy标记上的true属性设置为startup。像这样:

    <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
    </startup>

    使用此工具,我可以在针对.NET 4.6.2的同时成功运行 Get-Mailbox命令。

    关于c# - C#Powershell-Exchange管理{“Value cannot be null.\r\nParameter name: serverSettings”},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36451360/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com