特定のユーザーになりすまして ASPX ページから Add-Mailboxpermission を実行しようとしています。MSExchange 共通ソースからのアプリケーション エラーは、Web サーバーのイベント ビューアに記録されます。
プロセス ID: 2992 の dw20.exe に送信されるワトソン レポート: E12、c-buddy-RTL-AMD64、08.03.0083.006、w3wp、MEDDirectory、MEDDConnectionPoolManager.BlockImpersonatedCallers、MECommon.FailFastException、c84f、08.03.0213.000 . ErrorReportingEnabled: False
偽装呼び出しを含む別の Exchange CMDlet を実行するための同じコードが使用され、エラーなしで完了します。
String ErrorText = "";
RunspaceConfiguration config = RunspaceConfiguration.Create();
PSSnapInException warning;
sDecryptedPwd = SecurityManager.Decrypt(AdminPassword, true);
using (new Impersonator(AdminUserName, "domain name", sDecryptedPwd))
{
// Load Exchange PowerShell snap-in.
config.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out warning);
if (warning != null)
throw warning;
using (Runspace thisRunspace = RunspaceFactory.CreateRunspace(config))
{
try
{
thisRunspace.Open();
using (Pipeline thisPipeline = thisRunspace.CreatePipeline())
{
//Please change parameter values.
thisPipeline.Commands.Add("Add-MailboxPermission");
thisPipeline.Commands[0].Parameters.Add("Identity", sMailboxName);
thisPipeline.Commands[0].Parameters.Add("User", sUserName);
thisPipeline.Commands[0].Parameters.Add("AccessRights", sAccessRights);
thisPipeline.Commands[0].Parameters.Add("DomainController", sDomainController);
iLogManager.Info("Identity: " + sMailboxName + " User: " + sUserName + " AccessRights: " + sAccessRights + " DomainController: " + sDomainController);
try
{
thisPipeline.Invoke();
iLogManager.Info(thisPipeline.Commands[0].CommandText);
}
catch (Exception ex)
{
ErrorText = "Error: " + ex.ToString();
}
// Check for errors in the pipeline and throw an exception if necessary.
if (thisPipeline.Error != null && thisPipeline.Error.Count > 0)
{
StringBuilder pipelineError = new StringBuilder();
pipelineError.AppendFormat("Error calling Add-MailboxPermission.");
foreach (object item in thisPipeline.Error.ReadToEnd())
{
pipelineError.AppendFormat("{0}\n", item.ToString());
}
ErrorText = ErrorText + "Error: " + pipelineError.ToString() + Environment.NewLine;
}
}
}
finally
{
thisRunspace.Close();
}
}
}
if (ErrorText == "")
return "no error occurred.";
else
return ErrorText;
Exchange は、ACL を変更する Exchange CMDlets の偽装を許可していますか、それともここで何か間違ったことをしていますか..
ASPX ページからの偽装を使用した Exchange Powershell コマンドレットに関する情報はあまりありません。