2013-02-01 60 views
1

我有一个顺序调用HA Exchange环境(单个开发主机上的一切工作正常)上的多个PowerShell命令的问题。只要它是关于Exchange命令,我通过管道多个命令(执行在同一个节点上)使用解决方法,一切都很好。我的代码:Exchange 2010复制问题,而C#PowerShell调用多个命令

string casUri = "cas1.srv.net/Powershell?serializationLevel=Full"; 
string credentialUserName = "User"; 
string credentialUserPassword = "secret"; 
string newOU = "thenewou"; 
string baseOU = "OU=root,DC=srv,DC=net";   
     System.Security.SecureString passwd = new System.Security.SecureString(); 
     foreach (char c in credentialUserPassword) { 
      passwd.AppendChar(c); 
     } 
     PSCredential credential = new PSCredential(credentialUserName, passwd); 

     WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
       new Uri(casUri), 
       "http://schemas.microsoft.com/powershell/Microsoft.Exchange", 
       credential); 

     connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Default; 
     runspacePool = RunspaceFactory.CreateRunspacePool(1, 5, connectionInfo); 
     runspacePool.Open(); 

     powershell = PowerShell.Create(); 
     Command command; 
      command = new PSCommand(); 
      command.AddCommand("New-ADOrganizationalUnit"); 
      command.AddParameter("Path", baseOU); 
      command.AddParameter("Name", newOu); 
      command.AddParameter("DisplayName", "My new OU"); 
      powershell.Commands = command; 
     powershell.Invoke(); 

     // ... another AD commands: Set-ADForest, New-AcceptedDomain (work fine) 
     // v--- trouble 
      command = new PSCommand(); 
      command.AddCommand("New-GlobalAddressList"); 
      command.AddParameter("Name", "GAL.Name"); 
      command.AddParameter("RecipientContainer", newOu + "," baseOU); 
      powershell.Commands = command; 
     powershell.Invoke(); 

单个主机环境中不存在问题。 医管局这样,其他的命令在不同的主机上运行:

[myApp]---[CAS load balancer]---[CAS-1..CAS-N]---[EX-1..EX-N] 

这会导致异常:

Active Directory operation failed on DC2.srv.net. This error is not retriable.   
Additional information: The name reference is invalid. 
This may be caused by replication latency between Active Directory domain controllers. 
Active directory response: 000020B5: AtrErr: DSID-03152804, #1: 
      0: 000020B5: DSID-03152804, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 9b7f0292 (msExchSearchBase) 

我不知道如何强制与几个命令单个远程shell永久连接。 你有什么解决方案吗?

回答

0

你试试这个吗?

command.AddParameter("DomainController", "Your Domain Contorller FQDN");