chrone
Goto Top

Inaktive Computer auslesen

Hallo

Wir verwenden Windows Server 2003

Ich suche ein Script oder Freeware Tool mit dem ich die AD auslesen kann.
Und zwar möchte ich Computer, welche sich seit X Tagen nicht mehr an der Domäne gemeldet haben, auflisten.

So sollte es mir dann möglich sein, die AD aufzuräumen sein.

Gibt es eine einfache Lösung dafür.


Danke für eure Hilfe

Content-ID: 90852

Url: https://administrator.de/forum/inaktive-computer-auslesen-90852.html

Ausgedruckt am: 24.12.2024 um 12:12 Uhr

bastla
bastla 28.06.2008 um 19:32:12 Uhr
Goto Top
Hallo Chrone!

Sieh Dir mal OldCmp an ...

... bzw die Script-Lösungen hier.
Anmerkung zu den Scripts: Da hier ja Computer abgefragt werden sollen, ist die Zeile
strFilter = "(&(objectCategory=person)(objectClass=user))"  
zu ändern auf
strFilter = "(objectCategory=computer)"  
Grüße
bastla
Chrone
Chrone 28.06.2008 um 21:00:37 Uhr
Goto Top
Ich habe Script 1 zu 1 kopiert.
Dann habe ich es nochmals angepasst auf "computer".

Ich erhalte dann bei beiden Scripts den Fehler "Die Variable ist nicht definiert Wscript" bei folgender Zeile:
Wscript.Echo strUser & " ; " & objList.Item(strUser)

Hast du eine Idee woher dies kommt?
bastla
bastla 28.06.2008 um 21:24:22 Uhr
Goto Top
Hallo Chrone!

Sorry - kann ich nicht nachvollziehen.

Du kannst zwar zu Testzwecken am Anfang des Scripts vor "Option Explicit" ein REM schreiben oder in der angegebenen Zeile "Wscript." vor dem "Echo" weglassen, aber wenn Du nur das Festlegen des Filters in Zeile 105 geändert hast, sollte das Script eigentlich laufen.

Wie hast Du eigentlich das Script gestartet?

Grüße
bastla
Chrone
Chrone 29.06.2008 um 13:41:50 Uhr
Goto Top
Hallo Bastla

Nun funktioniert es.
Habe das Script zu erst im SimplexParser ausgeführt. Da funktionierte es nicht.

Wenn ich das Script in eine VBS-Datei speichere dann klappt es.

Mit cscript *.vbs > computer.txt kann ich die Informationen in eine Datei schreiben.

Gibt es vielleicht eine einfach Variante, dass nur Computer angezeigt werden mit einem Logon-Datum mehr als 30 Tagen?
Habe leider keine Ahnung von VBScript und Datums-Abfragen.


Gruss
Chrone
bastla
bastla 29.06.2008 um 18:27:12 Uhr
Goto Top
Hallo Chrone!

Dazu müsstest Du nur nach den "Dim"-Zeilen (etwa ab Zeile 46) einfügen:
Dim intAlter, dtmStichtag

intAlter = 30 'Alter in Tagen  
dtmStichtag = Date - intAlter
und den Ausgabeteil
Wscript.Echo strUser & " ; " & objList.Item(strUser)  
ändern auf
If objList.Item(strUser) < dtmStichtag Then
    Wscript.Echo strUser & ";" & objList.Item(strUser)  
End If
Grüße
bastla
Chrone
Chrone 29.06.2008 um 23:06:45 Uhr
Goto Top
Danke, funktioniert perfekt.


Vielen Dank für dein Hilfe

Gruss
Chrone
Chrone
Chrone 30.06.2008 um 08:38:15 Uhr
Goto Top
Hallo Bastla

Ich habe zum Teil zwei Datums in einer Zeile. Kannst du mir eventuell erklären, welches Datum wofür steht?

Kann man das Script eventuell anpassen, dass nur der Client-Name ohne "CN=" , die Description und das LastLogon-Datum angezeigt wird?

Besten Dank und Gruss
Chrone
bastla
bastla 30.06.2008 um 10:33:47 Uhr
Goto Top
Hallo Chrone!

Ich habe zum Teil zwei Datums in einer Zeile. Kannst du mir eventuell erklären, welches Datum wofür steht?
Sollte eigentlich nur ein Datum (zumeist mit Uhrzeit) sein ...

Kann man das Script eventuell anpassen, dass nur der Client-Name ohne "CN=" , die Description und das LastLogon-Datum angezeigt wird?
Deklarationen ergänzen (Zeile 47):
Dim objUser, objProperty, strDesc
Ausgabeteil ersetzen durch:
' Output latest lastLogon date for each user.  
For Each strUser In objList.Keys
    If objList.Item(strUser) < dtmStichtag Then
        On Error Resume Next
        objProperty = Null
        Set objUser = GetObject("LDAP://" & strUser)  
        objProperty = objUser.Get("Description")  
        If IsNull(objProperty) Then strDesc = "no Description" Else strDesc = objProperty  
        On Error Goto 0
        Wscript.Echo Split(Split(strUser, ",")(0), "=")(1) & ";" & strDesc & ";" & objList.Item(strUser)  
    End If
Next
Grüße
bastla
Chrone
Chrone 30.06.2008 um 12:48:32 Uhr
Goto Top
Hallo Bastla

Vielen vielen Dank.

Ich weiss nun weshalb zwei Daten angezeigt werden. Das sind Clients mit zwei Netzwerkkarten.

Kann man noch abfragen, ob der Client aktiv oder disabled ist?

gruss
Chrone
bastla
bastla 30.06.2008 um 14:07:26 Uhr
Goto Top
Hallo Chrone!

Dazu brauchen wir eine weitere Variablendeklaration
Dim strStatus
und folgenden Ausgabeteil:
' Output latest lastLogon date for each user.  
For Each strUser In objList.Keys
    If objList.Item(strUser) < dtmStichtag Then
        On Error Resume Next
        objProperty = Null
        Set objUser = GetObject("LDAP://" & strUser)  
        objProperty = objUser.Get("Description")  
        If IsNull(objProperty) Then strDesc = "no Description" Else strDesc = objProperty  
        If objUser.userAccountControl AND 2 Then strStatus = "disabled" Else strStatus = "enabled"  
        On Error Goto 0
        Wscript.Echo Split(Split(strUser, ",")(0), "=")(1) & ";" & strDesc & ";" & strStatus & ";" & objList.Item(strUser)  
    End If
Next
Genauer wäre übrigens die Ausgabe von "not disabled" anstelle von "enabled", da nur dieses Attribut abgefragt wurde ...

Grüße
bastla