I've built a PowerShell 5.1 script to export all the users in the DB and save all the data in to a CSV file. The script allows you to set a date back in time so you can decide since when you'd like your users to be exported.
After some testing a realized that not all the users are exported, and upon further investigation I realized that the property WhenChanged
and WhenCreated
are not present for each user. Despite the AD UI showing the property with the right data, as seen in the screenshot bellow.
When I run the following command:
Get-ADUser -filter * -Properties LastLogonDate, userPrincipalName, initials, WhenCreated, whenChanged | Select-Object userPrincipalName, initials, whenCreated, whenChanged
I get the following result:
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
As you can see the user with the initials TT has no value despite the screenshot showing that it has them. Despite me creating this user today, and changing few values the same day.
Questions
- What am I missing?
- Is it a problem with AD itself or just the command?
The solution to the problem is to right click on the PowerShell shortcut and select
Run as Administrator
. You have to do this even if you are an Administrator already. If you do that and run the command again all your data will be there.Like you, when I ran this command:
the date was always empty. I found this article: https://www.itprotoday.com/powershell/view-all-properties-ad-objects-powershell that showed me how to list all properties on an object:
Which lead me to this variation of my query to appropriately show the whenChanged (or any other property for that matter):
Note that you can replace the "*" with a comma delimited list of properties you care about - this likely has performance implications if you have large datasets or limited ram.
Hope this helps others.