C# 用c语言处理AD中的用户id#

C# 用c语言处理AD中的用户id#,c#,C#,我真的很困惑,我是一个非常不切实际的软件工程师(该领域的上一份工作是1993年!)为了使我的系统管理工作更容易,我做了一些次要的编码。我选择c#而不是powershell,因为它的调试效果更好。我要做的是,从电子表格中取出一个用户名,如果该用户名存在于Active Directory中,请检查其到期日期,如果电子表格中的用户名晚于Active Directory中设置的用户名,则更新Active Directory以反映 我在X64 2012服务器上使用VS 2015 我有以下代码段 using

我真的很困惑,我是一个非常不切实际的软件工程师(该领域的上一份工作是1993年!)为了使我的系统管理工作更容易,我做了一些次要的编码。我选择c#而不是powershell,因为它的调试效果更好。我要做的是,从电子表格中取出一个用户名,如果该用户名存在于Active Directory中,请检查其到期日期,如果电子表格中的用户名晚于Active Directory中设置的用户名,则更新Active Directory以反映

我在X64 2012服务器上使用VS 2015 我有以下代码段

using System.DirectoryServices.AccountManagement AuthenticablePrincipal.AccountExpirationDate
foundUser是
AuthenticatablePrincipal

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();
   }
}`
我的困惑源于这样一个事实:如果我随后读取
foundUser.AccountExpirationDate.value.ToLocalTime()的值,我没有得到错误
from AD它已使用电子表格中的值进行更新,如果我重新运行程序,此新值已就位,但在active directory用户和计算机中,flippin的内容不会显示为已更改

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