programing

PowerShell에서 WinRM을 사용하여 원격 서버에 연결하지 못했습니다.

mytipbox 2023. 8. 26. 15:42
반응형

PowerShell에서 WinRM을 사용하여 원격 서버에 연결하지 못했습니다.

컴퓨터에서 vm으로 전원 셸 코드를 실행하려고 하는데 다음 오류가 계속 발생합니다.

원격 서버에 연결하지 못했습니다. WinRM 클라이언트에서 요청을 처리할 수 없습니다.인증 체계가 Kerberos와 다르거나 클라이언트 컴퓨터가 도메인에 가입되어 있지 않은 경우 HTTPS 전송을 사용하거나 대상 컴퓨터를 신뢰할 수 있는 컴퓨터에 추가해야 합니다.호스트 구성 설정.winrm.cmd를 사용하여 신뢰할 수 있는 구성호스트. 신뢰할 수 있는 컴퓨터호스트 목록이 인증되지 않았을 수 있습니다.winrm help config 명령을 실행하면 자세한 정보를 얻을 수 있습니다.자세한 내용은 about_Remote_를 참조하십시오.문제 해결 도움말 항목.

내 코드:

  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();

제가 무엇을 빠뜨리고 있나요?

클라이언트와 원격 시스템이 동일한 도메인에 있지 않은 경우 다음 두 가지 옵션 중 하나를 사용할 수 있습니다.

  • HTTPS를 전송 프로토콜로 사용
  • 클라이언트의 신뢰할 수 있는 호스트 목록에 원격 시스템 추가

HTTPS를 사용하도록 WinRM을 구성하려면 두 시스템 모두에서 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"}

새 고객에게 이를 설정하려면 다음 작업을 수행해야 했습니다.

  1. 관리자 권한으로 PowerShell 실행

  2. 다음 명령을 실행하고 프롬프트에 yes라고 대답하여 WinRM을 활성화합니다.

    winrm quickconfig
    
  3. 신뢰할 수 있는 호스트에 호스트 추가(위치)1.2.3.4호스트의 IP 주소임):

    Set-Item wsman:localhost\client\trustedhosts -value 1.2.3.4
    

두 기계 모두에서 winrm을 활성화했습니까?달리기를 해 보다winrm quickconfig원격 연결을 사용하도록 설정할 수 있습니다.

언급URL : https://stackoverflow.com/questions/16010091/connecting-to-remote-server-failed-using-winrm-from-powershell

반응형