Nero2021 1 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 Hallo, ich habe vor einiger Zeit mal ein VB-Script zum Auslesen von AD Infos gefunden. Verwenden möchte ich den Beschreibung und das lastLogonTimeStamp aus dem AD Die Beschreibung auslesen klappt prima. Wenn ich das Auslesen des TimeStamp aktiviere, dann funktioniert beides nicht mehr. Hat jemand eine Idee? Über diese Zeile spreche ich: wscript.echo "LastLogonTimeStamp:" & objComputer.lastLogonTimestamp Kommentiere ich sie aus, wird die Beschreibung ausgelesen, ist sie aktiviert, wird nicht mehr ausgelesen. '========================================================================== Option Explicit 'On Error Resume Next Dim strKeyPath Dim strSearch Dim strAdsPath Dim strDefaultDomainNC Dim strADSQuery Dim objQueryResultSet Dim objADOConn Dim objADOCommand Dim objUser Dim objNetwork Dim strcomputer Dim oReg dim WSHShell, WshNetwork, strResult, objSysInfo, strcomment, objComputer ' Registrypfad für Inventory setzen strKeyPath = "SOFTWARE\Kunde" Set WSHShell = WScript.CreateObject("WScript.Shell") 'Rechnername auslesen Set objNetwork = Wscript.CreateObject("Wscript.Network") strcomputer = objNetwork.ComputerName Set WSHShell = WScript.CreateObject("WScript.Shell") Set WshNetwork = WScript.CreateObject("WScript.Network") WScript.Echo "Computer Name = " & WshNetwork.ComputerName Set objSysInfo = CreateObject("ADSystemInfo") Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName) wscript.echo "AD-Description:" & objComputer.description 'wscript.echo "LastLogonTimeStamp:" & objComputer.lastLogonTimestamp 'Registryobjekt anlegen const HKEY_LOCAL_MACHINE = &H80000002 Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ strComputer & "\root\default:StdRegProv") 'Registryschlüssel anlegen oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath If not objComputer.description = "" Then oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,"Client_Description",objComputer.description End if If not objComputer.LastLogonDate = "" Then oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,"LastLogonTimeStamp",objComputer.LastLogonTimeStamp End if Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 Moin, was hast du damit denn vor? Eigentlich macht man sowas heute nicht mehr per VBS. Wenn wir wissen, was damit geschehen soll, können wir dir vielleicht einen anderen Weg vorschlagen, statt hier ins Troubleshooting einzusteigen. Genau an diesem Beispiel zeigt sich nämlich einer der vielen Nachteile von VBS: Es kann nicht mit 64-Bit-Integers umgehen, und lastLogonTimestamp gibt leider einen solchen zurück. Gruß, Nils Zitieren Link zu diesem Kommentar
Nero2021 1 Geschrieben 7. Juni 2021 Autor Melden Teilen Geschrieben 7. Juni 2021 vor 40 Minuten schrieb NilsK: Moin, was hast du damit denn vor? Eigentlich macht man sowas heute nicht mehr per VBS. Wenn wir wissen, was damit geschehen soll, können wir dir vielleicht einen anderen Weg vorschlagen, statt hier ins Troubleshooting einzusteigen. Genau an diesem Beispiel zeigt sich nämlich einer der vielen Nachteile von VBS: Es kann nicht mit 64-Bit-Integers umgehen, und lastLogonTimestamp gibt leider einen solchen zurück. Gruß, Nils Hallo Nils, danke für deine schnelle Antwort. Ich möchte die Computerbeschreibung und den letzten Kontakt des Clients aus dem AD auslesen. Diese Abfrage wird per Softwareverteilung am Client ausgeführt und in ein bestimmtes Tool eingetragen. Ich bin ganz bei dir und würde diese Abfrage am liebsten per Powershell machen aber das kann WIn10 leider nicht ohne Nachinstallation des entsprechenden CMD-let. Also versuche ich es gerade mit dem VBS. Liebe Grüße Norbert Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 (bearbeitet) vor 37 Minuten schrieb Nero2021: Diese Abfrage wird per Softwareverteilung am Client ausgeführt und in ein bestimmtes Tool eingetragen. Nur um da nix falsch zu verstehen: Das Tool, in das diese Informationen eingetragen werden, läuft auf dem jeweiligen Client? Darf man fragen, was das für ein Tool ist? vor 37 Minuten schrieb Nero2021: aber das kann WIn10 leider nicht ohne Nachinstallation des entsprechenden CMD-let "cmdlet" .. klein und zusammen. ... man kann das AD auch ohne spezialisierte cmdlets abfragen. ... was nicht heißen soll, dass das in diesem Fall ein gute Idee sein muss. bearbeitet 7. Juni 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
Nero2021 1 Geschrieben 7. Juni 2021 Autor Melden Teilen Geschrieben 7. Juni 2021 vor 24 Minuten schrieb BOfH_666: Nur um da nix falsch zu verstehen: Das Tool, in das diese Informationen eingetragen werden, läuft auf dem jeweiligen Client? Darf man fragen, was das für ein Tool ist? "cmdlet" .. klein und zusammen. ... man kann das AD auch ohne spezialisierte cmdlets abfragen. ... was nicht heißen soll, dass das in diesem Fall ein gute Idee sein muss. ich habe gerade das Gefühl, dass wir uns von meinem eigentlichen Thema entfernen. Mir reicht es völlig aus, wenn die AD Infos ausgelesen werden können und wie in meinem Beispiel in die Registry eingetragen werden. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 vor 16 Minuten schrieb Nero2021: Mir reicht es völlig aus, wenn die AD Infos ausgelesen werden können und wie in meinem Beispiel in die Registry eingetragen werden. Dann wird es Dich bestimmt freuen, zu hören, dass das mit PowerShell auch ohne installierte AD-cmdlets möglich ist. query AD without RSAT ... Zitieren Link zu diesem Kommentar
daabm 1.358 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 vor 4 Stunden schrieb Nero2021: Wenn ich das Auslesen des TimeStamp aktiviere, dann funktioniert beides nicht mehr. Und welchen Fehlercode bekommst Du dann? "Funktioniert nicht mehr" ist etwas spärlich als Fehlerbeschreibung. Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 Moin, vor 38 Minuten schrieb daabm: Und welchen Fehlercode bekommst Du dann? "Funktioniert nicht mehr" ist etwas spärlich als Fehlerbeschreibung. ich mutmaße mal: Das Skript bricht wegen des Fehlers ab und gibt deshalb auch den Rest nicht mehr aus. @Nero2021 wir haben jetzt den klassischen Fall, dass du dich auf dein Detailproblem fokussierst, statt das übergeordnete Ergebnis in den Blick zu nehmen. Was soll denn mit den Daten geschehen? Wäre es vielleicht schlauer, sie zentral auszulesen statt vom Client aus? Gruß, Nils 1 Zitieren Link zu diesem Kommentar
daabm 1.358 Geschrieben 7. Juni 2021 Melden Teilen Geschrieben 7. Juni 2021 (bearbeitet) Ich verweise mal auf einen anderen Faden in diesem Forum... Gerade mal 11 Jahre jung bearbeitet 7. Juni 2021 von daabm Zitieren Link zu diesem Kommentar
Nero2021 1 Geschrieben 8. Juni 2021 Autor Melden Teilen Geschrieben 8. Juni 2021 vor 10 Stunden schrieb NilsK: Moin, ich mutmaße mal: Das Skript bricht wegen des Fehlers ab und gibt deshalb auch den Rest nicht mehr aus. @Nero2021 wir haben jetzt den klassischen Fall, dass du dich auf dein Detailproblem fokussierst, statt das übergeordnete Ergebnis in den Blick zu nehmen. Was soll denn mit den Daten geschehen? Wäre es vielleicht schlauer, sie zentral auszulesen statt vom Client aus? Gruß, Nils Hallo Nils, ich sehe das gerade mehr unter der Rubrik, lernen. Ich würde an dieser Stelle gerne verstehen wo der Fehler liegt. Es gibt zwei Zeilen: wscript.echo "AD-Description:" & objComputer.description 'wscript.echo "LastLogonTimeStamp:" & objComputer.lastLogonTimestamp die Erste macht was sie soll. Die zweite sorgt dafür, dass auch die erste nicht mehr funktioniert, wenn sie dann aktiviert ist. Liebe Grüße Norbert Zitieren Link zu diesem Kommentar
cj_berlin 1.323 Geschrieben 8. Juni 2021 Melden Teilen Geschrieben 8. Juni 2021 (bearbeitet) Moin, wenn Du in 2021 in der Windows Scripting-Welt was unter die Rubrik "lernen" stellen willst, lerne PowerShell, wie bereits von anderen angemerkt wurde. In der Sache: Ich kann Dein berichtetes Verhalten hier nicht nachstellen, bei mir wird die erste Zeile immer korrekt ausgeführt. Die zweite Zeile wirft einen "Object doesn't support this property or method"-Fehler (den Du nicht erwähnt hast), was bedeutet, dass die Repräsentation des AD-Objektes nicht alle Attribute beinhaltet (welch Wunder!). lastLogon und lastLogonTimestamp sind int64-Zahlen. Damit kann ja schon PowerShell nicht 100% umgehen, VB eher zu 50%, und VBS schon gar nicht. Du kannst den Wert mit objComputer.GetEx("lastlogontimestamp") in eine Variable ziehen, aber VBS hat keinen kanonischen Konverter dafür in einen String. Somit wäre es ein klassischer Fall von "am Ende der Möglichkeiten des gewählten Systems angekommen". bearbeitet 8. Juni 2021 von cj_berlin 3 Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 8. Juni 2021 Melden Teilen Geschrieben 8. Juni 2021 Moin, warum beides nicht ausgeführt wird, kann ich auch nicht nachvollziehen. Wie führst du das Skript denn aus? Läuft es evtl. in einem Host, der nur dann die Ausgaben anzeigt, wenn es keine Fehler im gesamten Ablauf gibt? Wenn es unbedingt die antike Technik sein soll und du nicht sagen willst, was damit geschehen soll, damit man es vielleicht insgesamt anders angehen kann, hier der klassische Artikel, der beschreibt, wie man genau diese Daten mit VBS abfragt: https://devblogs.microsoft.com/scripting/dandelions-vcr-clocks-and-last-logon-times-these-are-a-few-of-our-least-favorite-things/ Deinem Skriptcode nach zu urteilen, baust du aber nicht auf bestehendem Wissen auf, und dann ist es wirklich nicht zukunftsweisend, auf eine Technik zu setzen, die seit 15 Jahren nicht mehr entwickelt wird. Aber das sagten wir vielleicht schon. Gruß, Nils 2 Zitieren Link zu diesem Kommentar
Beste Lösung Nero2021 1 Geschrieben 8. Juni 2021 Autor Beste Lösung Melden Teilen Geschrieben 8. Juni 2021 vor 2 Stunden schrieb NilsK: Moin, warum beides nicht ausgeführt wird, kann ich auch nicht nachvollziehen. Wie führst du das Skript denn aus? Läuft es evtl. in einem Host, der nur dann die Ausgaben anzeigt, wenn es keine Fehler im gesamten Ablauf gibt? Wenn es unbedingt die antike Technik sein soll und du nicht sagen willst, was damit geschehen soll, damit man es vielleicht insgesamt anders angehen kann, hier der klassische Artikel, der beschreibt, wie man genau diese Daten mit VBS abfragt: https://devblogs.microsoft.com/scripting/dandelions-vcr-clocks-and-last-logon-times-these-are-a-few-of-our-least-favorite-things/ Deinem Skriptcode nach zu urteilen, baust du aber nicht auf bestehendem Wissen auf, und dann ist es wirklich nicht zukunftsweisend, auf eine Technik zu setzen, die seit 15 Jahren nicht mehr entwickelt wird. Aber das sagten wir vielleicht schon. Gruß, Nils Vielen Dank für eure Unterstützung. Ich habe nun auf PS gewechselt :) Meine Lösung 1 Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 8. Juni 2021 Melden Teilen Geschrieben 8. Juni 2021 Moin, das ist gut. Dann hat sich unser dezentes Drängeln ja gelohnt. Danke für die Rückmeldung, Nils 1 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 8. Juni 2021 Melden Teilen Geschrieben 8. Juni 2021 vor 2 Stunden schrieb Nero2021: Vielen Dank für eure Unterstützung. Ich habe nun auf PS gewechselt :) Meine Lösung Hmmm ... das ist ein bissl missverständlich. In im "Titel" des Threads geht es eigentlich darum, die RSAT cmdlets ohne installierte RSAT zu nutzen, aber der als Antwort markierte Beitrag hat eigentlich nix damit zu tun. Welche Lösung hast Du denn benutzt, wenn ich so neugierig sein darf? Das implicit Remoting oder die Lösung mit dem [adsisearcher]? Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.