在C#中使用Powershell访问Exchange

时间:2016-11-22 03:08:20

标签: c# powershell exchange-server

我试图在c#中使用powershell访问Exchange服务器 这是我试图使用的代码

            WSManConnectionInfo ConnectionInfo = new WSManConnectionInfo(new Uri(@"http://myexchangeserver.com"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", (PSCredential)null);
            ConnectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
            using (Runspace runspace = RunspaceFactory.CreateRunspace(ConnectionInfo))
            {
                using (PowerShell PS_Instance = PowerShell.Create())
                {
                    PS_Instance.AddCommand("Get-MailboxPermission -Identity UAT_TestGeneric");

                    runspace.Open();
                    PS_Instance.Runspace = runspace;
                    Collection<PSObject> results = PS_Instance.Invoke();

                    if (PS_Instance.Streams.Error.Count > 0)
                    {
                        //Couldnt Connect To Server
                    }
                    else
                    {
                        //Do Stuff
                    }
                }

我不断收到此错误消息

  

WinRM客户端从远程接收到HTTP状态代码403   WS-Management服务。有关更多信息,请参阅   about_Remote_Troubleshooting帮助主题。

我已检查过Exchange服务器powershell IIS文件夹,并且它不需要SSL,如https://support.microsoft.com/en-au/kb/2276957所示。

那里有没有人可以提供帮助? 感谢。

2 个答案:

答案 0 :(得分:1)

因为错误403意味着没有别的“拒绝访问”我认为远程powershell没有为你正在使用的taskuser启用。尝试启用该通道(如MS文档here中所述):

set-user <your user account> -RemotePowerShellEnabled $True

解决问题的另一个有用的来源是MS文档here

答案 1 :(得分:0)

任何其他人都能看到这一点。 我修复此问题是因为URI错误

WSManConnectionInfo ConnectionInfo = new WSManConnectionInfo(new Uri(@"http://myexchangeserver.com"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", (PSCredential)null);

uri需要是@“http://myexchangeserver.com/Powershell”。 因此,虽然PowerShell是在服务器上正确设置的,但您需要连接到正确的IIS文件夹路径