У меня есть приложение, которое (среди прочего) должно вызывать командлет New-MailContact и создавать контакты в Active Directory. Я просмотрел несколько технических статей, чтобы дойти до того, что у меня есть, но это все еще не работает.
Я проверил, что моя учетная запись службы имеет надлежащую аутентификацию на основе эта страница TechNet. Я могу найти и вызвать командлет из powershell, и я не получаю никаких ошибок.
Однако после запуска я проверяю свою OU, и мой контакт не был создан. Я нашел эту статью в базе знаний, которая, по моему мнению, может быть подозрительной, но поскольку командлет не возвращает любые ошибки после вызова, я не могу быть уверен, что это решит мою проблему.
Вот фрагмент того, что я делаю:
public bool CreateMailContactObject(ADExchangeContact adExchangeContacts)
{
Collection<PSObject> results;
Pipeline pipeLine = null;
try
{
var runspaceConfiguration = RunspaceConfiguration.Create();
PSSnapInException snapInException;
var snapInInfo = runspaceConfiguration.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException);
using (var runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
{
var newMailBoxContact = new Command("New-MailContact");
newMailBoxContact.Parameters.Add("Name", adExchangeContacts.DisplayName);
newMailBoxContact.Parameters.Add("ExternalEmailAddress", adExchangeContacts.ExternalEmailAddress);
newMailBoxContact.Parameters.Add("OrganizationalUnit", adExchangeContacts.OrganizationalUnit);
newMailBoxContact.Parameters.Add("Alias", adExchangeContacts.Alias);
runspace.Open();
pipeLine = runspace.CreatePipeline();
pipeLine.Commands.Add(newMailBoxContact);
results = pipeLine.Invoke();
_log.DebugFormat("results.Count = {0}", results.Count);
results.ForEach(x => x.Properties.ForEach(y => _log.DebugFormat("{0}: {1}", y.Name, y.Value)));
pipeLine.Stop();
runspace.Close();
}
return true;
}
catch (Exception ex)
{
// Add log statement
_log.ErrorFormat("Creation of Mail Contact in AD Failed. Error: {0}", ex);
return false;
}
}
Я не получаю никаких исключений, и мой список результатов пуст из вызова Pipeline. Есть ли что-то, что мне не хватает? Если командлет выйдет из строя из-за разрешений при создании контакта в AD, разве я не ожидаю получить какую-то ошибку в результирующем наборе от pipeLine.Invoke()
??
Я новичок в использовании Powershell, поэтому, если есть другая проблема (помимо статьи базы знаний), которая может возникнуть, сообщите мне об этом.