Не удалось подключиться к удаленному серверу с помощью WinRM из PowerShell

Я пытаюсь запустить код powershell с моего компьютера на виртуальную машину на моем компьютере, но я продолжаю получать эту ошибку:

не удалось подключиться к удаленному серверу со следующим сообщением об ошибке : Клиент WinRM не удается обработать запрос. Если аутентификация схема отличается от Kerberos, или если клиентский компьютер не присоединенный к домену, затем должен использоваться транспорт HTTPS или конечный компьютер должен быть добавлен в конфигурацию TrustedHosts установочный. Используйте winrm.cmd для настройки TrustedHosts. Обратите внимание, что компьютеры в списке TrustedHosts может не быть аутентифицирован. Вы можете получить больше сведения об этом, выполнив следующую команду: справка winrm конфиг. Дополнительные сведения см. В разделе about_remote_troubleshooting Раздел справки.

мой код:

  string runasUsername = @"aaa";
    string runasPassword = "aaa";
    SecureString ssRunasPassword = new SecureString();
    foreach (char x in runasPassword)
        ssRunasPassword.AppendChar(x);
    PSCredential credentials = new PSCredential(runasUsername, ssRunasPassword);

    var connInfo = new WSManConnectionInfo(new Uri("http://10.0.5.35/PowerShell"),
        "http://schemas.microsoft.com/powershell/Microsoft.Exchange",credentials);
    connInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;

    var runspace = RunspaceFactory.CreateRunspace(connInfo);


    var domainName = "domainName.COM";
    var password = "ActiveDirectoryPassword1234";
    var ssPassword = new SecureString();
    foreach (char c in password)
        ssPassword.AppendChar(c);


    var command = new Command("New-Mailbox");

    command.Parameters.Add("FirstName", firstName);
    command.Parameters.Add("LastName", lastName);
    command.Parameters.Add("Password", ssPassword);
    command.Parameters.Add("ResetPasswordOnNextLogon", false);
    command.Parameters.Add("OrganizationalUnit", "NeumontStudents");

    runspace.Open(); <--//error here
    var pipeline = runspace.CreatePipeline();
    pipeline.Commands.Add(command);


    var results = pipeline.Invoke();

    runspace.Dispose();

что я упустил?

2 ответов


Если клиент и удаленный компьютер не на том же домене, у вас есть два варианта:

  • использовать HTTPS в качестве транспортного протокола
  • добавьте удаленную машину в список доверенных хостов на клиенте

для того чтобы настройка WinRM чтобы использовать HTTPS, откройте консоль PowerShell в качестве администратора на обеих машинах и запуска:

winrm quickconfig -transport:https

и открытый порт 5986 на брандмауэр:

netsh firewall add portopening TCP 5986 "WinRM over HTTPS"

кроме того, вы можете добавить удаленную машину в качестве доверенного хоста на клиенте работает:

winrm set winrm/config/client '@{TrustedHosts="10.0.5.35"}'

вы включили winrm на обеих машинах? попробуйте запустить winrm quickconfig на каждой машине для обеспечения удаленного подключения включен.