我有一个应用程序(除其他外)需要调用 New-MailContact cmdlet 并在 Active Directory 中创建联系人。我已经关注了一些技术文章以达到我所拥有的程度,但它仍然无法正常工作。
我已经验证我正在使用的服务帐户具有基于此 TechNet 页面的正确身份验证。我能够从 powershell 找到并调用 cmdlet,并且没有收到任何错误。
但是,运行后我检查了我的 OU,但没有创建我的联系人。我发现了这篇我认为可能值得怀疑的 KB 文章,但由于 cmdlet 在调用后没有返回任何错误,因此我不能确定这是否能解决我的问题。
这是我正在做的一个片段:
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;
}
}
我没有得到任何异常,并且我的结果列表在管道调用中是空的。有什么我想念的吗?如果在 AD 中创建联系人时由于权限导致 cmdlet 失败,我不希望在结果集中收到某种错误pipeLine.Invoke()
吗??
我是运行 Powershell 的新手,所以如果手头还有其他问题(知识库文章之外),请告诉我。