Jump to content

PS: Get-Adcomputer. Abfrage von LastlogonDate


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich möchte in unser Server 2012 AD Umgebung eine Rechnerliste erstellen.

Diese soll anzeigen, welche Computer seit längerem nicht "aktiv" waren.

 

Folgendes funktioniert, zeigt mir aber falsche Daten bzgl. des Datums an.

get-adcomputer -filter * -properties *| select name,operatingsystem,lastlogondate | sort lastlogondate |  ft -Auto

 

Ein System, welches am heutigen Tage durch Updates etc. mehrfach gestartet wurde, wurde mit  in der Spalte lastlogondate mit dem Datum vom 02.09.2013 7:15 gelistet.

So wird auch nur ein einziger Rechner mit heutigem Datum gelistet, scheinbar laufen die anderen 50 Systeme durch....?

 

Leider finde ich bei MS auch nichts bzgl. lastlogondate und get-adcomputer

 

Ist das bei Euch auch so?

 

Danke

 

 

Link zu diesem Kommentar

Nur als alternative Lösung, die ich seit ewigen Zeiten in "AD Users & Computers" als Abfrage gespeichert habe (und ich auch bisher zu faul war mir was anderes zu suchen):

(&(&(objectCategory=Computer)(lastLogonTimeStamp<=130182028790000000)(!userAccountControl:1.2.840.113556.1.4.803:=2)))

Was man halt manuell ändern muß ist das vor "x Tagen" (hier 60 Tage) in Nanosekunden.

Berechnen lasse ich mir das über ein VBS-Skript:

Dim dtmDate, dbl100NanoSecsConst
MAXIMUM_PASSWORD_AGE = 60
dtmDate = DateAdd("d", -MAXIMUM_PASSWORD_AGE, Now())
dbl100NanoSecs = 10000000 * (DateDiff("s", "1/1/1601", dtmDate))
dbl100NanoSecs = FormatNumber(dbl100NanoSecs, 0, False, False ,0)
WScript.Echo ("Value for query = " & dbl100NanoSecs)

Link zu diesem Kommentar

Hallo,

 

wir haben noch einen 2. DC in einer VM, der spuckt (Gott Sei Dank) die gleichen Werte aus.

Wenn der da 9 Tage zurück liegen würd, wär´s ja nicht so prickelnd!

 

@4077 Danke für den Tipp, per PS wär es mir lieber, nur so aus Prinzip. Fraglich ist ja auch, ob das lastlogon property überhaupt das richtige ist.

Trotzdem Danke!

 

Gruß

Link zu diesem Kommentar

Du könntest ja auch einfach deinen Zeitraum größer wählen.

9 Tage sind ja nicht gerade lange.

 

$COMPAREDATE	=	GET-DATE 
$NumberDays	=	90 
GET-QADCOMPUTER -SizeLimit 0 -IncludedProperties LastLogonTimeStamp | where { ($CompareDate-$_.LastLogonTimeStamp).Days -gt $NumberDays } | Select-Object Name, LastLogonTimeStamp, OSName, ParentContainerDN | Sort-Object ModificationDate, Name

Müsstest deine Filter noch einbringen.

 

Hier gibt es noch Infos zum lastlogontimestamp: http://msdn.microsoft.com/en-us/library/windows/desktop/ms676824%28v=vs.85%29.aspx

Gilt zwar für User, wird beim Computer aber nicht anders sein.

bearbeitet von mamamia
Link zu diesem Kommentar

Die 9 Tage sind ja nur die Daten des PC´s der heute definitiv neu gestartet wurde!

Gefiltert wird ja nichts, die ursprüngliche Abfrage zeigt ja alles an.

 

Ich verwende übrigens kein get-Qadcomputer sondern "nur" get-adcomputer.

 

Danke

 

Edit: Es geht ja drum, das die Werte von lastlogondate nicht stimmen können

bearbeitet von Knorkator
Link zu diesem Kommentar

http://blogs.technet.com/b/askds/archive/2009/04/15/the-lastlogontimestamp-attribute-what-it-was-designed-for-and-how-it-works.aspx =>

 

"Logon types and that will trigger an update to the lastLogontimeStamp attribute.

The lastLogontimeStamp attribute is not updated with all logon types or at every logon. The good news is that the logon types that admins usually care about will update the attribute and often enough to accomplish its task of identifying inactive accounts.

Interactive, Network, and Service logons will update the lastLogontimeStamp. So if a user logs on interactively, browses a network share, access the email server, runs an LDAP query etc… the lastLogontimeStamp attribute will updated if the right condition is met. (The conditions are discussed below in the section Update and Replication of lastLogontimeStamp.

As of Windows 2003 SP1 these logon types will NOT update lastLogontimeStamp

  • Certificate mapping through Microsoft Internet Information Services (IIS).
  • Microsoft .NET Passport mapping through IIS."
Link zu diesem Kommentar
  • 2 Monate später...

Hallo Leute,

 

hier eine Lösung von Mark Minasi (aus seinem Webinar "The Case For Powershell" http://www.uvm.edu/~gcd/2013/09/mark-minasis-talk-the-case-for-powershell/):

 

search-adaccount -accountinactive -DateTime "01.10.2013" -ComputersOnly

 

Etwas für meine Zwecke umgebaut (Powershell 3.0, Export in CSV-Datei, ohne Column Headers, nur Computername und LastLogon):

 

import-module Activedirectory
$outfile = -join ("c:\temp\OldComp-",([datetime]::Now).Year,"-",([datetime]::Now).Month,".csv")
search-adaccount -accountinactive -timespan "90"  -ComputersOnly -SearchBase "OU=xxx,OU=xxx,dc=xxx,dc=xxx"  |
 Select-Object Name,LastLogonDate |
 sort lastlogondate |
 convertTo-CSV |
 Select -Skip 2 |
 Out-File $outfile
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...