2017-01-05 3 views
0

当社のExchangeサーバに対してリモートPowerShellコマンドを実行しようとしていますが、そのコマンドが開発サーバから実行されたときにAccess Is Deniedエラーが発生しています。私のローカルマシンでコードを実行すると、コードはうまく動作します。開発サーバーにリモートでもPowerShellコマンドを実行して、接続を完全にうまく行うことができます。私はなぜ開発サーバーからコードを実行するときにAccess Is Deniedエラーが出るのかを理解するのに助けが必要です。リモートPowerShellを実行中にアクセスが拒否されましたが、devサーバから実行された場合にのみ正常に動作します

public static void CreateEmailBox(string samAccountName) 
{ 
    var securedPassword = new SecureString(); 
    foreach (char character in ConfigurationManager.AppSettings["ServiceAccountPassword"]) { securedPassword.AppendChar(character); } 
    var loginInfo = new PSCredential(ConfigurationManager.AppSettings["ServiceAccountUser"], securedPassword); 

    var connection = new WSManConnectionInfo(new Uri("http://exch-svr.domain.local/powershell"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", loginInfo); 
    connection.AuthenticationMechanism = AuthenticationMechanism.Kerberos; 

    using (var runspace = RunspaceFactory.CreateRunspace(connection)) 
    { 
     using (var powershell = PowerShell.Create()) 
     { 
      powershell.AddCommand("enable-mailbox"); 
      powershell.AddParameter("Identity", samAccountName); 
      powershell.AddParameter("Database", "Mailbox Database 4"); 
      runspace.Open(); 
      powershell.Runspace = runspace; 
      powershell.Invoke(); 
      runspace.Close(); 
     } 
    } 
} 
+0

を有効にし、リモートPowerShellです[ここを参照してください](https://msdn.microsoft.com/en-us/ powershell/reference/4.0/microsoft.powershell.core/enable-psremoting)? – BastianW

+0

ローカルマシン上で問題なくこのコードを実行できるので、有効になっていると思います。開発サーバーにコードをデプロイすると接続に失敗します。 – Matthew

+0

あなたのリモートマシン上のコードを使用する場合、「Powershellを削除する」というメッセージは表示されません。 – BastianW

答えて

0

問題は、パスワードとそのセキュリティ文字列としての保存方法にあります。

パスワードの暗号化/復号化に使用される暗号化キーがすべてのコンピュータで異なるため、セキュリティ文字列はコンピュータによって異なります。

共有鍵を使用するか、またはこれを実行するコンピュータごとに個別の安全な文字列を格納する必要があります。コンピュータ間でセキュアな文字列を渡す方法の詳細については

、上の私のより詳細な回答を参照してください。ConvertTo-SecureString gives different experience on different servers

関連する問題