public IHttpActionResult GetSubMailBoxFolder([FromUri] string Name) { Runspace remoteRunspace = null; try { aOpenRunSpace.Open(GetUserData().AccountName, GetUserData().Password, ref remoteRunspace); var results = aMailBoxFolderHelpers.MailBoxFolders(GetUserData().AccountName + ":\\" + Name, ref remoteRunspace); var SubFolderSelectResults = aMailBoxFolderHelpers.SubFolderSelectResults(results.Invoke()); var ErrorMsgs = aCommomHelpers.ReturnPowerShellInvokeErrors(results.Streams.Error); if (ErrorMsgs != null) { return(Content(HttpStatusCode.BadRequest, ErrorMsgs)); } return(Ok(SubFolderSelectResults)); } catch (Exception e) { if (e.InnerException != null) { return(BadRequest(e.InnerException.Message)); } else { return(BadRequest(e.Message)); } } finally { remoteRunspace.Close(); remoteRunspace.Dispose(); } }
private void RecursiveSettingAccessRights(List <PostPutMailBoxFolderPermission> Model, ref Runspace remoteRunspace) { var SubFolderResults = aMailBoxFolderHelpers.MailBoxFolders(GetUserData().AccountName + ":\\" + Model.FirstOrDefault().FolderPath, ref remoteRunspace); var SubFolderSelectResults = aMailBoxFolderHelpers.SubFolderSelectResults(SubFolderResults.Invoke()); foreach (var sub in SubFolderSelectResults) { string aFolderPath = string.Join("\\", ((ArrayList)sub.FolderPath).Cast <object>().Select(x => x == null ? null : x.ToString()).ToArray()).ToString(); //加入權限 foreach (var m in Model) { if (m.AccessRights.Length > 0) { string AccountName = GetUserData().AccountName; var MailBoxFolderPermissionResults = aMailBoxFolderPermissionHelpers.PSmailBoxFolderPermission(AccountName + ":\\" + aFolderPath, ref remoteRunspace); var MailBoxFolderPermissionSelectResults = aMailBoxFolderPermissionHelpers.RootFolderPermissionResults(MailBoxFolderPermissionResults.Invoke()); PowerShell results = null; if (MailBoxFolderPermissionSelectResults.Where(a => a.UserPrincipalName == m.UserPrincipalName).Any()) { results = aMailBoxFolderPermissionHelpers.SetMailBoxFolderPermission(GetUserData().AccountName + ":\\" + aFolderPath, m.UserPrincipalName, m.AccessRights, ref remoteRunspace); } else { results = aMailBoxFolderPermissionHelpers.AddMailBoxFolderPermission(GetUserData().AccountName + ":\\" + aFolderPath, m.UserPrincipalName, m.AccessRights, ref remoteRunspace); } results.Invoke(); //var ErrorMsgs = aCommomHelpers.ReturnPowerShellInvokeErrors(results.Streams.Error); //if (ErrorMsgs != null) //{ // remoteRunspace.Close(); // remoteRunspace.Dispose(); // return; //} results.Commands.Clear(); } } //遞迴查詢 var aModel = Model; foreach (var a in aModel.ToList()) { a.FolderPath = aFolderPath; } if (sub.HasSubfolders) { RecursiveSettingAccessRights(aModel, ref remoteRunspace); } } }