Я пытаюсь получить удаленный доступ к Exchange Server 2013 с помощью PowerShell из Windows 7. Ниже приведен фрагмент кода, который я использую:
public static void ConnectToPowerShell()
{
string password = "password";
string userName = "Administrator";
System.Uri uri = new Uri(@"http://ExchangeServer/powershell?serializationLevel=Full");
System.Security.SecureString securePassword = String2SecureString(password);
System.Management.Automation.PSCredential creds = new System.Management.Automation.PSCredential(userName, securePassword);
Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace();
PowerShell powershell = PowerShell.Create();
PSCommand command = new PSCommand();
command.AddCommand("New-PSSession");
command.AddParameter("ConfigurationName", "Microsoft.Exchange");
command.AddParameter("ConnectionUri", uri);
command.AddParameter("Credential", creds);
command.AddParameter("Authentication", "Default");
PSSessionOption sessionOption = new PSSessionOption();
sessionOption.SkipCACheck = true;
sessionOption.SkipCNCheck = true;
sessionOption.SkipRevocationCheck = true;
command.AddParameter("SessionOption", sessionOption);
powershell.Commands = command;
try
{
// open the remote runspace
runspace.Open();
// associate the runspace with powershell
powershell.Runspace = runspace;
// invoke the powershell to obtain the results
Collection<PSSession> result = powershell.Invoke<PSSession>();
String str=null;
foreach (ErrorRecord current in powershell.Streams.Error)
{
// Console.WriteLine("The following Error happen when opening the remote Runspace: " + current.Exception.ToString() +
// " | InnerException: " + current.Exception.InnerException);
str = "The following Error happen when opening the remote Runspace: " + current.Exception.ToString() +
" | InnerException: " + current.Exception.InnerException;
MessageBox.Show(str);
}
if (result.Count != 1)
throw new Exception("Unexpected number of Remote Runspace connections returned.");
// Set the runspace as a local variable on the runspace
powershell = PowerShell.Create();
...........................................
...........................................
}
В строке:
Collection<PSSession> result = powershell.Invoke<PSSession>();
Это дает следующее исключение:
При открытии удаленного пространства выполнения возникает следующая ошибка: System.Management.Automation.Remoting.PSRemotingTransportException: не удалось подключиться к удаленному серверу со следующим сообщением об ошибке: клиент WinRM не может обработать запрос. Клиент WinRM попытался использовать механизм проверки подлинности Negotiate, но конечный компьютер (rmex13: 80) вернул ошибку «Доступ запрещен». Измените конфигурацию, чтобы разрешить использование механизма аутентификации Negotiate, или укажите один из механизмов аутентификации, поддерживаемых сервером. Чтобы использовать Kerberos, укажите имя локального компьютера в качестве удаленного пункта назначения. Также убедитесь, что клиентский компьютер и конечный компьютер присоединены к домену. Чтобы использовать Basic, укажите имя локального компьютера в качестве удаленного пункта назначения, укажите обычную проверку подлинности и укажите имя пользователя и пароль. Возможные механизмы аутентификации, сообщаемые сервером: Для получения дополнительной информации см. Раздел справки about_Remote_Troubleshooting
Как я могу исправить этот тип исключения?