T-Me
T-Me

Reputation: 1884

AD GUI shows properties that PowerShell returns empty

I want to get a list of all AD Users and their creation time and last logon time. First I used the Active Diretory Users and Computers app and activated the Advanced Features. In the Attribute Editor I can see the properties are called LastLogon and WhenCreated.
So I did this:

$allUsers = Get-ADUser  -Filter * -Properties SamAccountName,LastLogon,WhenCreated
$allUsers   | select SamAccountName,LastLogon,WhenCreated 

However LastLogonand WhenCreated are only filled for 13 of 500 Users. In the Attribute Editor these values are filled for a lot more...
When I query one user only that has these values in the Attribute Editor with Get-ADUser -Identity $User -Properties * I see that the attributes are called LastLogonDateand Created (values are shown empty).
So I searched for those attributes:

$allUsers2= Get-ADUser  -Filter * -Properties SamAccountName,LastLogonDate,Created
$allUsers2   | select SamAccountName,LastLogonDate,Created

Then again those 13 have the info the rest doesn't. Has anyone an idea how I get those values? (I am going to export them with Export-CSV so another way to get those in Excel is ok, too )

Upvotes: 1

Views: 1876

Answers (2)

Theo
Theo

Reputation: 61148

As requested my comments as answer.

First attempt:

Add the -Server switch on Get-ADUser and have it query the same Domain Controller you are currently connected to with Active Directory Users and Computers. It may be that you are asking for properties that have not yet been synchronized (especially the lastLogon time stamp which I believe is synced only once every 14 days unless you have specified a different value for the ms-DS-Logon-Time-Sync-Interval attribute on the domain default naming context.)

--> didn't apply because you're running this on the DC itself

Second attempt:

Try ADSI as in $searcher = [adsisearcher]'(&(objectCategory=person)(objectClass=user))'; $searcher.FindAll()

--> same results as with Get-ADUser; still empty values

Third attempt:

Check PowerShell version(s)

--> apparently the DC had PS version 4. With version 5.1 it works

Upvotes: 2

AlexeyM
AlexeyM

Reputation: 21

First, look at what properties your cmdlet has:

$a = Get-ADUser -server 'DomenNameTest.en' -Identity 'makarovayu' -Properties *
$a | Get-Member
  • I recommend copying the received data into a notepad in order to copy the available field names later.

2-Let's declare an array and use the cmdlet to try to collect information on the required fields

$userList = Get-ADUser -server 'DomenNameTest.en' -Properties SamAccountName,Name -Filter * |
#Do not forget that the comanlet has a limitation and can fall off on timeout.See how I work with each property in [select]
Select @{Name = "SamAccountName"; Expression={$_.SamAccountName}},@{Name = "Name"; Expression={$_.Name}} |
#Uploading data to [csv]
Export-Csv -Path "D:\Users\userTest\Desktop\userList.csv" -Append -NoTypeInformation -Encoding Default -Delimiter ';'
Remove-Variable a,userList  #Clear the variables

Upvotes: 2

Related Questions