Hallo, ich habe anhand von mittlerweile 2 verschiedenen Scripts versucht, die LastLogon-Zeit auszulesen. Bei jedem Script bekomme ich andere Ergebnisse und keins der beiden stimmt mit dem Ergebnis im AD überein. Wo liegt der Fehler (es handelt sich um 1-2 Jahre Differenz. Die Replizierung ist auf 15 Minuten gestellt.
import-module ActiveDirectory
[Int64]$puffer = Read-Host 'Wie viele Tage darf ein User inaktiv sein, damit er angezeigt wird?'
[Int64]$puff = $puffer*(-1)
[Int64]$day=(Get-date).day
[Int64]$month=(Get-date).month
[Int64]$year=(Get-date).year
[Int64]$extone=$day+$month*30+$year*365
[Int64]$datelogon = $extone-$puffer
get-ADUser -Filter * -Properties company,lastlogon | Where {$logontill -gt $_.lastlogon -ne "0"} | select company,Enabled,lastlogon,Name,SamAccountName | export-csv C:/temp/olduser.csv
sleep 10
oder alternativ dieses, wobei ich das obere bevorzuge:
import-module ActiveDirectory
$dcs = Get-ADDomainController -Filter {Name -like "*"}
$i = 0
$username = Get-ADUser -F *
$timefilter = Read-Host 'Nur Benutzer auslesen, die sich länger als angebene Tage nicht angemeldet haben. Nur Zahlenwert, 0 erfasst alle'
$timefilter = (Get-Date).Adddays(-($timefilter))
$path = "olduser2.csv"
If (Test-Path $path){
Remove-Item $path
}
"SamAccountName" +";" + "Name" +";" + "Company" +";" + "Enabled" + ";" + "Time">> $path
foreach($User in $username)
{
$time = 0
foreach($dc in $dcs)
{
$user = Get-ADUser $User | Get-ADObject -Properties lastLogonTimestamp
if($user.lastLogonTimestamp -gt $time)
{
$time = $user.lastLogonTimestamp
}
}
$time = [datetime]::FromFileTime($time)
If ($time -lt $timefilter){
$Name = Get-ADUser $User -Properties Name
$Name = $Name.Name
$SamAccountName = Get-ADUser $User -Properties SamAccountName
$SamAccountName = $SamAccountName.SamAccountName
$Company = Get-ADUser $User -Properties Company
$Company = $Company.Company
$Enabled = Get-ADUser $User -Properties Enabled
$Enabled = $Enabled.Enabled
$SamAccountName +";" + $Name +";" + $Company + ";" + $Enabled + ";" + $time >> $path
$i++}
}
$FoundUsers = "Es wurden " + $i + " Benutzer gefunden."
echo $FoundUsers
sleep 10
PS: bin noch nicht so ganz in der Materie.