我试图在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所示。
那里有没有人可以提供帮助? 感谢。
答案 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文件夹路径