I run this and get nothing in my csv, need to loop all five of my domain controllers to get proper last logon timestamp for service accounts in specific OUs:
Import-Module ActiveDirectory
function Get-ADUsersLastLogon()
{
$dcs = Get-ADDomainController -Filter {Name -like “*”}
$users = Get-ADUser -Filter * -SearchBase “OU=Service Accounts,OU=SSG,DC=ssg,DC=domainname,DC=com”
$time = 0
$exportFilePath = “c:lastLogon.csv”
$columns = “name,username,datetime”
Out-File -filepath $exportFilePath -force -InputObject $columns
foreach($user in $users)
{
foreach($dc in $dcs)
{
$hostname = $dc.HostName
$currentUser = Get-ADUser $user.SamAccountName | Get-ADObject -Server $hostname -Properties lastLogon
if($currentUser.LastLogon -gt $time)
{
$time = $currentUser.LastLogon
}
}
$dt = [DateTime]::FromFileTime($time)
$row = $user.Name+","+$user.SamAccountName+","+$dt
Out-File -filepath $exportFilePath -append -noclobber -InputObject $row
$time = 0
}
}
Get-ADUsersLastLogon | Export-CSV C:\SSGServiceAccounts\LastLogonReport.csv -NoTypeInformation
What happened to this post?
https://powershell.org/forums/topic/clean-up-service-accounts-in-ad/
Please please format your code. Above every post in bold has instructions how to do this.
Have you stepped through your code line by line and see where a variable fails to populate? You have a lot going on here, and haven’t given us much information on where you’re running into issues other than “it’s not working”
Why are you serializing the file data…
Out-File -filepath $exportFilePath -append -noclobber -InputObject $row
… then exporting here?
Get-ADUsersLastLogon |
Export-CSV 'C:\SSGServiceAccounts\LastLogonReport.csv' -NoTypeInformation
You give a file name of …
$exportFilePath = “c:lastLogon.csv”
… then change that file name here…
Export-CSV 'C:\temp\LastLogonReport.csv' -NoTypeInformation
…why?
It’s even ion a different path. Again, why?
This is really not a thing. It’s one or the other.
You don’t need this at all…
| Export-CSV C:\SSGServiceAccounts\LastLogonReport.csv -NoTypeInformation
Since you already created the file in the code.
This is why, Jon stated…
Have you stepped through your code line by line and see where a variable fails to populate?
… as I say all the time.
If you don’t approach you script one step at a time, yo have no idea in most cases if what you are doing is ever going to work in the end. Each step by itself must be successful.