Не удалось подключиться к удаленному серверу с помощью 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
на каждой машине для обеспечения удаленного подключения включен.