protected static ICollection <PSObject> ExecuteCmdlet(string cmdlet, bool isNeedDC, PSParameters parms) { if (isNeedDC) { //parms.Add(new PSParameter("DomainController", PreferDC)); } if (cmdlet == null) { throw new ArgumentNullException("cmdlet"); } if (cmdlet.Length == 0) { throw new ArgumentException("cmdlet length is zero", "cmdlet"); } Command item = new Command(cmdlet); foreach (PSParameter parameter in parms) { if (parameter.Value == null) { item.Parameters.Add(parameter.Name); } else { item.Parameters.Add(parameter.Name, parameter.Value); } } ICollection <PSObject> is2 = null; Pipeline pipeline = null; List <object> errorList = new List <object>(); try { lock (sync) { if (_runspace.RunspaceStateInfo.State == RunspaceState.Broken) { _runspace.Close(); ReOpen(); } SubmitSecurity subSecurity = new SubmitSecurity(); if (subSecurity.impersonateValidUser(DomainAdmin, Domain, DomainAdminPass)) { pipeline = _runspace.CreatePipeline(); using (Pipeline pipeline2 = pipeline) { pipeline.Commands.Add(item); is2 = pipeline.Invoke(); if (pipeline.Error != null && pipeline.Error.Count > 0) { foreach (object item1 in pipeline.Error.ReadToEnd()) { errorList.Add(item1); string errorMessage = string.Format("Invoke error: {0}", item1); Log4netHelper.Error(errorMessage); } } } } } } finally { pipeline = null; } return(is2); }