使用c#在AD中操作用户ID

时间:2016-03-25 23:31:31

标签: c#

我很困惑,我是一名非常缺乏实践的软件工程师(该领域的最后一份工作是1993年!)做了一些小编码,使我的系统管理员工作变得更容易。我选择了#hell over powershell,因为它有更好的调试。我正在尝试做的是从电子表格中取出用户名,如果Active Directory中存在该用户名,请检查其到期日期,如果电子表格中的用户名是否晚于活动目录中设置的用户名,则将活动目录更新为反映。

我在X64 2012 Server上使用VS 2015 我有以下代码段

using System.DirectoryServices.AccountManagement AuthenticablePrincipal.AccountExpirationDate

foundUser是AuthenticablePrincipal

Globals.Uservars是一个全球性的(我知道......请不要关于全局变量的讲座)字符串数组保存与AD用户对象相关的数据。

Uservars[4]是电子表格中的失效日期。

Uservars[7]是操作的反馈评论结果。

AccountExpires = foundUser.AccountExpirationDate.Value.ToLocalTime();
ThisDay = DateTime.FromOADate(Convert.ToDouble(Globals.UserVars[4]));
if (ThisDay!=null)
{
   if (ThisDay > AccountExpires)
   {
       foundUser.AccountExpirationDate = ThisDay; 
       foundUser.Save();
       Globals.UserVars[7] = "Account End Date Incremented";
       OutputResult();
   }
   else
   {
       Globals.UserVars[7] = "Existing User No Changes Made";
       OutputResult();
   }
}`

我的困惑源于我没有收到错误的事实,如果我随后从AD读取了foundUser.AccountExpirationDate.Value.ToLocalTime();的值,它已使用电子表格中的值更新,如果我重新运行该程序新值已到位,但flippin'在事务目录用户和计算机中未显示为已更改。

此外,如果我在更新AD之前尝试将DateTime值转换为FILETIME(我相信我应该这样做,因为我怀疑我实际上是用不正确的值更新AD,尽管我看到它,如果我读回来)它似乎抛出一个错误。 DUH?

0 个答案:

没有答案