none
导出AD用户信息 RRS feed

  • 问题

  • 你好

    我有一个导出AD账户需求,具体需求如下,请协助,谢谢

    导出AD用户需求信息如下:

    1. 显示名称

    2. 邮箱类型

    3. 电子邮件地址

    4. 别名

    5. 数据库(如果不能导出可以不导出)

    6. 组(可有可无)

    7. 账户状态(禁用和活动)

    8. 最后一次登录时间

    注:每个都分列显示,方便做数据整理


    • 已编辑 dnake668 2021年7月12日 3:26 修改需求
    2021年7月12日 3:03

答案

  • 您好,

    可以把时间的过滤条件去掉

    $file = "C:\temp\info.csv"
    Get-ADUser -Filter * -Properties DisplayName,EmployeeID,mail,mailnickname,LastLogonDate | 
        Select-Object -Property DisplayName,EmployeeID,mail,mailnickname,Enabled,LastLogonDate |
        Export-Csv -NoTypeInformation -Path $file -Encoding UTF8

    如您还有其他疑问,请随时与我们联系。如果回答是有帮助的,请将其标记为答案,可以帮助其他社区成员快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    • 已标记为答案 dnake668 2021年7月13日 9:21
    2021年7月13日 8:37
  • 您好,

    抱歉我对AD并不是很熟悉。如果是只有用户的没有属性编辑器页面的话,建议您可以另外发帖提问,这样可以让熟悉AD的专家更容易地参与进来讨论。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    • 已标记为答案 dnake668 2021年7月19日 2:29
    2021年7月16日 10:12

全部回复

  • 您好,

    要获取AD用户可以使用Get-ADUser这个命令。不清楚上面说的邮箱类型是不是指的msExchRecipientTypeDetails。如果是的话,需要注意RecipientTypeDetails是以一个整数的形式保存的。不是的话可以自行将msExchRecipientTypeDetails换成其他的属性。

    $user = "abc"
    $file = "C:\temp\info.txt"
    Get-ADUser -Identity $user -Properties DisplayName,msExchRecipientTypeDetails,mail,mailnickname,homeMDB,enabled,lastlogondate | 
     Select-Object DisplayName,msExchRecipientTypeDetails,mail,mailnickname,homeMDB,
     @{n="Group";e={(Get-ADPrincipalGroupMembership -Identity $user).DistinguishedName}},enabled,lastlogondate |
     Export-Csv -NoTypeInformation -Path $file

    关于msExchRecipientTypeDetails属性可以参考这个链接

    https://answers.microsoft.com/en-us/msoffice/forum/all/recipient-type-values/7c2620e5-9870-48ba-b5c2-7772c739c651

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.


    • 已编辑 Ian Xue 2021年7月12日 8:22
    • 已建议为答案 Bryan丶Song 2021年7月12日 9:39
    2021年7月12日 8:17
  • 你好

    这个“abc” 是什么意思呢,这个邮箱类型是邮箱用户状态(如用户,用户存档,通知用户等等)没有这个也可以的,这个不是主要的

    2021年7月12日 8:49
  • 您好,

    这个$user是用户名,可以将abc替换成实际的用户名称。

    祝好

    Ian Xue



    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2021年7月12日 9:14
  • 你好

    我要导出AD中所有用户信息,我们目前有2000多个用户,那表示我要运行2000多次,然后在把这2000多次导出信息汇总,这样工作量是不是太大了,是不是可以一次完成我的需求呢

    2021年7月13日 1:43
  • 您好,

    要导出域中所有用户的话可以这样

    $file = "C:\temp\info.csv"
    Get-ADUser -Filter * -Properties DisplayName,msExchRecipientTypeDetails,mail,mailnickname,homeMDB,enabled,lastlogondate | 
     Select-Object DisplayName,msExchRecipientTypeDetails,mail,mailnickname,homeMDB,
     @{n="Group";e={(Get-ADPrincipalGroupMembership -Identity $_.name).DistinguishedName}},enabled,lastlogondate |
     Export-Csv -NoTypeInformation -Path $file


    如您还有其他疑问,请随时与我们联系。如果回答是有帮助的,请将其标记为答案,可以帮助其他社区成员快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.


    • 已编辑 Ian Xue 2021年7月13日 1:51
    2021年7月13日 1:50
  • 你好

    这么命令可以导出所有用户信息,导出信息发现可能不是我所希望的,所以修改下导出信息参数,谢谢

    导出域中所有信息需求如下

    显示名称;工号;电子邮件地址,别名;账户状态;最后一次登录时间(过滤只导出最近3个月记录)

    2021年7月13日 3:19
  • 您好,

    不是很确定您的环境里工号是用的什么属性,EmployeeID还是EmployeeNumber?这个可以自行到ADUC中用户的属性页去确认下。假设用的是EmployeeID,那么可以Get-ADUser查看下面这些属性。

    关于只导出最近三个月记录,是要只导出最后登录时间是在三个月以内的用户?是的话可以试下这个

    $file = "C:\temp\info.csv"
    $date=(Get-Date).AddDays(-90)
    Get-ADUser -Filter {LastLogonDate -gt $date} -Properties DisplayName,EmployeeID,mail,mailnickname,LastLogonDate | 
        Select-Object -Property DisplayName,EmployeeID,mail,mailnickname,Enabled,LastLogonDate |
        Export-Csv -NoTypeInformation -Path $file

    如您还有其他疑问,请随时与我们联系。如果回答是有帮助的,请将其标记为答案,可以帮助其他社区成员快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.



    • 已编辑 Ian Xue 2021年7月13日 5:01
    2021年7月13日 4:47
  • 你好

    导出的DisplayName值中应该有中文,显示为两个??,这个是不是需要添加什么值来可以显示中文

    注:使用net user 用户查看上次用户登录时间怎么和你这个跑出来的时间不同呢,有一个用户使用net命令跑出来上次登上时间为2021.3月,你这个命令跑出来最后一次登陆时间为2021.7月,这两个有什么区别呢


    • 已编辑 dnake668 2021年7月13日 6:17 修改内容
    2021年7月13日 6:09
  • 您好,

    有中文的话可以编码改为UTF8。

    $file = "C:\temp\info.csv"
    $date=(Get-Date).AddDays(-90)
    Get-ADUser -Filter {LastLogonDate -gt $date} -Properties DisplayName,EmployeeID,mail,mailnickname,LastLogonDate | 
        Select-Object -Property DisplayName,EmployeeID,mail,mailnickname,Enabled,LastLogonDate |
        Export-Csv -NoTypeInformation -Path $file -Encoding UTF8


    关于登陆时间,net user查询的是LastLogon属性,而上面LastLogonDate实际查询的是LastLogonTimestamp属性。看您上面的描述,域中可能有多个DC。LastLogonTimestamp属性是会在DC之间复制的,而LastLogon属性是不会在DC间复制的,用户登陆时修改的只有当前提供登录验证的DC,因此出现获取的LastLogon不同于LastLogonTimestamp。

    关于更加具体的一些说明,可以参考

    https://social.technet.microsoft.com/wiki/contents/articles/22461.understanding-the-ad-account-attributes-lastlogon-lastlogontimestamp-and-lastlogondate.aspx

    如您还有其他疑问,请随时与我们联系。如果回答是有帮助的,请将其标记为答案,可以帮助其他社区成员快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2021年7月13日 6:46
  • 你好

    你上面这个导出是过滤后的90天登录信息,如果不过滤时间,所有时间都导出,这个应该怎么修改呢


    • 已编辑 dnake668 2021年7月13日 8:13 修改
    2021年7月13日 8:03
  • 您好,

    可以把时间的过滤条件去掉

    $file = "C:\temp\info.csv"
    Get-ADUser -Filter * -Properties DisplayName,EmployeeID,mail,mailnickname,LastLogonDate | 
        Select-Object -Property DisplayName,EmployeeID,mail,mailnickname,Enabled,LastLogonDate |
        Export-Csv -NoTypeInformation -Path $file -Encoding UTF8

    如您还有其他疑问,请随时与我们联系。如果回答是有帮助的,请将其标记为答案,可以帮助其他社区成员快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    • 已标记为答案 dnake668 2021年7月13日 9:21
    2021年7月13日 8:37
  • 您好

    如果要查看属性,需要进入“Active Directory 用户和计算机”,在“查看”菜单上,选中“高级功能”,然后在需要查看的用户上右键点击”属性“,然后选择“属性编辑器“选项卡。

    看您上面的描述,所说的这个工号可能是SamAccountName,可以看一下这个的结果

    $file = "C:\temp\info.csv"
    Get-ADUser -Filter * -Properties DisplayName,mail,mailnickname,LastLogonDate | 
        Select-Object -Property DisplayName,SamAccountName,mail,mailnickname,Enabled,LastLogonDate |
        Export-Csv -NoTypeInformation -Path $file -Encoding UTF8

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.


    • 已编辑 Ian Xue 2021年7月14日 6:28
    2021年7月14日 6:28
  • 你好

    问题已经解决

    另外先问下

    根据你说的那个勾选高级选项,查看编辑信息,通过用户属性没有编辑选项,所以没有办法查看你说的那个参数,但如果是通过计算机属性是可以查看到你说的那个属性的,这种情况是还有哪里设置问题吗,所以导致我通过用户属性不能查看编辑内容,确定每个参数的使用代码

    2021年7月16日 8:03
  • 您好,

    抱歉我对AD并不是很熟悉。如果是只有用户的没有属性编辑器页面的话,建议您可以另外发帖提问,这样可以让熟悉AD的专家更容易地参与进来讨论。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    • 已标记为答案 dnake668 2021年7月19日 2:29
    2021年7月16日 10:12