26

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

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

私は何が欠けていますか?

4

3 に答える 3

34

クライアントとリモート マシンが同じドメインにない場合は、次の 2 つのオプションのいずれかを使用できます。

  • トランスポート プロトコルとして 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"}
于 2013-04-15T08:10:49.567 に答える