2017-01-05 1 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

는 https://msdn.microsoft.com/en-us/ 활성화 원격 PowerShell을 [여기를 참조] (인가 powershell/reference/4.0/microsoft.powershell.core/enable-psremoting)? – BastianW

+0

로컬 컴퓨터에서이 코드를 아무런 문제없이 실행할 수 있으므로 사용할 수 있다고 생각합니다. 개발 서버에 코드를 배포 할 때만 연결에 실패합니다. – Matthew

+0

그러나 원격 컴퓨터에서 코드를 사용하는 경우 "Powershell 제거"가 없거나 설정을 이해할 수 없습니다. – BastianW

답변

0

문제는 암호와 보안 문자열로 저장되는 방법입니다.

암호가 암호화/암호 해독되는 데 사용되는 암호화 키가 모든 컴퓨터마다 다르기 때문에 보안 문자열은 컴퓨터마다 다릅니다.

공유 키를 사용하거나이 컴퓨터를 실행할 각 컴퓨터에 별도의 보안 문자열을 저장해야합니다. 컴퓨터에 내 더 자세한 답변을 참조 간의 보안 문자열을 전달하는 방법에 대한 자세한 내용은

: ConvertTo-SecureString gives different experience on different servers