Я создаю приложение, которое взаимодействует с Active Directory с помощью System.Management.Automation (не использует службы каталогов, поскольку в настоящее время изучает эту библиотеку и изучает ее).Чтобы обновить членство в группе для группы в активном каталоге, я создаю объект JSON в своем представлении и вызываю функцию для передачи объекта и URI от внешнего интерфейса к внутреннему через функцию в моем контроллере.
Основная идея заключается в том, чтобы разрешить массовое удаление членов группы AD, передав объект JSON в качестве параметра сценарию оболочки, который будет выполнен в экземпляре PowerShell, созданном в функции.Я использую вызов .ajax для вызова функции контроллера и передачи объекта JSON, который я сгенерировал в качестве аргумента, вместе с текущим URI.Функция shell.commands.AddParameter () принимает аргумент только в строковом формате.Итак, я напечатал его с помощью ToString () и преобразовал его в JSON в сценарии PowerShell.Я передаю URL из кода, так как URL может быть изменен.Я не получаю никаких ошибок Однако, я также не могу видеть какие-либо обновления в членстве в AD.Объект Json генерируется из таблицы HTML.
Мой сценарий оболочки
param($objMemberUpdate, $uri)
$body = $objMemberUpdate | ConvertTo-JSON
Invoke-WebRequest -Uri $uri -Method Post -Body $objMemberUpdate
Моя функция контроллера для вызова экземпляра PowerShell и выполнения файла сценария оболочки из указанного расположения.
private string UpdateMemberList(JsonResult objMemberUpdate)
{
var uri = HttpContext.Request.Url.AbsoluteUri;
var shell = PowerShell.Create();
shell.Commands.AddCommand(AppDomain.CurrentDomain.BaseDirectory + "Shell\\Set-ADGroupMembership.ps1").AddParameter(objMemberUpdate.ToString(), uri);
var results = shell.Invoke();
shell.Dispose();
return results.ToString();
}
Вызов Ajax, который я вызываю нажатием кнопки на моей HTML-странице.
//Make Array Object to pass in the API For Membership Update
$("#btnUpdate").click(function () {
var RemoveMembers = [];
var RemoveAfter = [];
var MemberUpdate = {};
var GroupGUID = "";
$("table [id*=ddlReqdAdjustment]").each(function () {
if ($(this).val() != "Keep") {
GroupGUID = $(this).parent().parent().children().eq(4)[0].innerText;
var date = $(this).parent().parent().children().eq(8)[0].firstElementChild.value;
var ObjectGUID = $(this).parent().parent().children().eq(3)[0].innerText + "@@" + $('#ddlDirectory').val();
if ($(this).val() == "Remove") {
var format = ObjectGUID;
RemoveMembers.push(format);
} else {
var format = date + "|" + ObjectGUID;
RemoveAfter.push(format);
}
}
});
MemberUpdate = {
"Directory": $('#ddlDirectory').val(),
"Group": GroupGUID,
"Remove": RemoveMembers,
"RemoveAfter": RemoveAfter,
"ResultFormat": "json",
"OnBehalfOf": "11112201"
};
console.log(MemberUpdate);
$.ajax({
type: "POST",
url: "/Group/UpdateMemberList",
data: { objMemberUpdate: MemberUpdate },
success: function (response) {
alert(response.message);
}
});
Предполагается, что выбранный элемент в таблице удаляется из группы, для которой GroupGUID (атрибут ObjectGUID в AD) имеет видупоминается из нашей эры.Тем не менее, нет ошибок времени компиляции или времени выполнения, и не отражаются даже какие-либо изменения, и я думаю, что это должно быть связано с проблемой с моим объектом JSON?