web-dev-qa-db-ja.com

PowerShellからWinRMを使用してリモートサーバーに接続できませんでした

コンピューターからコンピューター上のvmにPowerShellコードを実行しようとしていますが、次のエラーが発生し続けます。

リモートサーバーへの接続が次のエラーメッセージで失敗しました:WinRMクライアントは要求を処理できません。認証スキームがKerberosと異なる場合、またはクライアントコンピューターがドメインに参加していない場合は、HTTPSトランスポートを使用するか、宛先マシンをTrustedHosts構成設定に追加する必要があります。 winrm.cmdを使用してTrustedHostsを構成します。 TrustedHostsリストのコンピューターは認証されない可能性があることに注意してください。次のコマンドを実行すると、詳細情報を取得できます:winrm helpconfig。詳細については、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();

何が足りないのですか?

13
woolford

クライアントとリモートマシンが同じドメイン上でない場合は、次の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"}
23

両方のマシンでwinrmを有効にしましたか?実行してみてくださいwinrm quickconfig各マシンで、リモート接続が有効になっていることを確認します。

1