我构建了一个 PowerShell 5.1 脚本来导出数据库中的所有用户并将所有数据保存到 CSV 文件中。该脚本允许您及时设置日期,以便您可以决定何时希望导出用户。
经过一些测试后,我意识到并非所有用户都已导出,经过进一步调查,我意识到该属性WhenChanged
并不 WhenCreated
存在于每个用户中。尽管 AD UI 显示了具有正确数据的属性,如下面的屏幕截图所示。
当我运行以下命令时:
Get-ADUser -filter * -Properties LastLogonDate, userPrincipalName, initials, WhenCreated, whenChanged | Select-Object userPrincipalName, initials, whenCreated, whenChanged
我得到以下结果:
userPrincipalName initials whenCreated whenChanged
----------------- -------- ----------- -----------
11/9/2017 2:06:29 PM 1/24/2018 4:26:48 PM
11/9/2017 2:07:47 PM 11/22/2017 4:12:52 PM
[email protected] MP 11/14/2017 3:14:45 PM 2/14/2018 4:02:51 AM
[email protected] DG 11/15/2017 12:51:25 PM 2/21/2018 2:12:52 PM
[email protected] AE
[email protected] MM
[email protected] RW
[email protected] KK
[email protected] AP
[email protected] JS
[email protected] CB 11/17/2017 12:21:32 PM 11/22/2017 4:41:35 PM
[email protected]
[email protected] TT
如您所见,尽管屏幕截图显示具有首字母 TT,但具有首字母 TT 的用户没有任何价值。尽管我今天创建了这个用户,并且在同一天更改了几个值。
问题
- 我错过了什么?
- 是 AD 本身的问题还是只是命令的问题?
该问题的解决方案是右键单击 PowerShell 快捷方式并选择
Run as Administrator
. 即使您已经是管理员,也必须这样做。如果您这样做并再次运行该命令,您的所有数据都将在那里。像你一样,当我运行这个命令时:
日期总是空的。我找到了这篇文章:https ://www.itprotoday.com/powershell/view-all-properties-ad-objects-powershell ,它向我展示了如何列出对象的所有属性:
这导致我对我的查询进行了这种变体,以适当地显示 whenChanged (或与此相关的任何其他属性):
请注意,您可以将“*”替换为您关心的以逗号分隔的属性列表 - 如果您有大型数据集或有限的内存,这可能会影响性能。
希望这对其他人有帮助。