Output is not correct

I need help with this script. I am getting double entries in the output for few users. when script catch the error in the catch block of script. It create double entry for the user below in the text file.

Import-Module ActiveDirectory
$UserList = Get-Content C:\UserList.txt
$infoobj = @()
foreach ($user in $UserList) {
Try {
$UserInfo = Get-ADUser -Identity $User -Properties * -ErrorAction stop
}
Catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] {
Write-Output “$($_.TargetObject)” | Out-File C:\UserNotFound.txt -Append
}

Finally {
$Prop = [Ordered]@{

    'User Name' = $UserInfo.name
    'eTenet ID' = $UserInfo.Samaccountname
    'EmployeeID'= $UserInfo.EmployeeID
    'LastLogonTimeStamp' = $(([DateTime]::FromFileTime($UserInfo.lastLogonTimestamp)))}

$InfoObj += New-Object PSObject -Property $Prop
$infocall = $infoobj
}
}
Write-Output $Infocall

Because your line
$UserInfo = Get-ADUser -Identity $User -Properties * -ErrorAction stop

doesn’t work when the user isn’t found

$Prop = [Ordered]@{
'User Name' = $UserInfo.name
'eTenet ID' = $UserInfo.Samaccountname
'EmployeeID'= $UserInfo.EmployeeID
'LastLogonTimeStamp' = $(([DateTime]::FromFileTime($UserInfo.lastLogonTimestamp)))}
$InfoObj += New-Object PSObject -Property $Prop
$infocall = $infoobj
}

uses the information from the last successful call

something like this should work

$UserInfo = $null
Try {
$UserInfo = Get-ADUser -Identity $User -Properties * -ErrorAction stop
}
Catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] {
Write-Output "$($_.TargetObject)" | Out-File C:\UserNotFound.txt -Append
}
if ($userinfo) {
$Prop = [Ordered]@{
'User Name' = $UserInfo.name
'eTenet ID' = $UserInfo.Samaccountname
'EmployeeID'= $UserInfo.EmployeeID
'LastLogonTimeStamp' = $(([DateTime]::FromFileTime($UserInfo.lastLogonTimestamp)))}
$InfoObj += New-Object PSObject -Property $Prop
$infocall = $infoobj
}
}

Your script is working
Thank you very much Richard…