Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit VBS passwortgültigkeit im AD auslesen

Frage Entwicklung VB for Applications

Mitglied: koluschkiB

koluschkiB (Level 1) - Jetzt verbinden

08.06.2010, aktualisiert 15:29 Uhr, 8955 Aufrufe, 10 Kommentare

Hallo Admin-Freunde

hab mal ne frage zum Auslesen von Daten aus dem AD

Ich soll ein VB-Script schrieben, was auf einem Terminal-Server durch jeden Benutzer ausführbar sein soll. Das Script soll das AD auslesen, um genau zu sein die Passwortgültigkeit.

Nun zu der Funktion selbst:

Der Terminal-Server User (nicht Admin) soll das Script straten können.
Das Script liest aus dem AD die Passwortgültigkeit und gibt folgenden meldung

01.
MSGbox = ("Ihr Passwort ist noch 14Tage Gültig, um es zu ändern drücken Sie Strg+F1 um es zu ändern")
(Auf nem Terminal Server kann man nicht Strg-Alt-Entf drücken, wie es halt bei nem Win-Client üblich ist um das PW zu ändern)

Sollte das Passwort mehr als 14 Tage gültig sein, soll nur die genau Anzahl ausgegeben werden.

Quasi:
01.
Msgbox = ("Ihr Passwort ist noch 21 tage gültig und nu weiter Arbeiten!!!")
Das Script muss also die genau Tagesanzahl ausgeben bzw. Sie richtig verarbeiten können.

hab schon bisschen geschaut und die allwissende platform befragt, hab aber nur befehle für cmd gefunden

01.
net user "benutzername", aber das ist nun mal nicht das was ich suche
hoffe jemand von euch kann mir nen Tipp oder ne hilfestellung geben, denn irgendwie komme ich da nicht wirklich voran

gruß und danke für alle Tipps im vorraus

koluschkiB
Mitglied: bastla
08.06.2010 um 15:36 Uhr
Hallo koluschkiB!

Zur Abwechslung mal ein "ganz gewöhnlicher" MS-Link: http://msdn.microsoft.com/en-us/library/ms974598.aspx

Grüeß
bastla
Bitte warten ..
Mitglied: koluschkiB
08.06.2010 um 15:57 Uhr
hey Bastla,

und Danke für die schnelle Antwort. Aber irgendwie blicke ich da nicht richtig durch. Hab aber was evtl. passendes gefunden, aber leider haut mir das Script ne fehlermeldung raus und ich weiss nicht warum

01.
 
02.
'======================================== 
03.
' First, get the domain policy. 
04.
'======================================== 
05.
Dim oDomain 
06.
Dim oUser 
07.
Dim maxPwdAge 
08.
Dim numDays 
09.
   
10.
strDomainDN = "testAD.com" 
11.
strUserDN = strDomainDN & "/CN=koluschkiB,CN=Users,DC=testAD,DC=com" 
12.
     
13.
Set oDomain = GetObject("LDAP://" & strDomainDN) 
14.
Set maxPwdAge = oDomain.Get("maxPwdAge") 
15.
 
16.
'======================================== 
17.
' Calculate the number of days that are 
18.
' held in this value. 
19.
'======================================== 
20.
numDays = CCur((maxPwdAge.HighPart * 2 ^ 32) + _ 
21.
                    maxPwdAge.LowPart) / CCur(-864000000000) 
22.
Msgbox = ("Maximum Password Age: " & numDays) 
23.
     
24.
'======================================== 
25.
' Determine the last time that the user 
26.
' changed his or her password. 
27.
'======================================== 
28.
Set oUser = GetObject("LDAP://" & strUserDN) 
29.
 
30.
'======================================== 
31.
' Add the number of days to the last time 
32.
' the password was set. 
33.
'======================================== 
34.
whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged) 
35.
     
36.
msgbox = ("Password Last Changed: " & oUser.PasswordLastChanged) 
37.
msgbox = ("Password Expires On: " & whenPasswordExpires) 
38.
 
39.
'======================================== 
40.
' Clean up. 
41.
'======================================== 
42.
Set oUser = Nothing 
43.
Set maxPwdAge = Nothing 
44.
Set oDomain = Nothing 
45.
 
46.
msgbox = ("Done") 
47.
 
der Fehler ist in der 22 Zeile "ungültige zuweisung MSGBOX" (häää?)
ich gehe mal aus, dass alles Msgbox denn fehler haben werden.

das Original script fand ich hier
http://support.microsoft.com/kb/323750

kann mir weiterhelfen?

gruß und Danke im vorraus

KoluschkiB
Bitte warten ..
Mitglied: koluschkiB
08.06.2010 um 16:03 Uhr
Edit:

hab aus allen MSgbox = Wscript.echo gemacht. soweit so gut. das Script liest das AD aus, aber gibt mir nur die Maximale Gültigkeitsdauer aus, sprich 90Tage. Wenn ich OK drücke kirge ich leider ne Fehlermeldung

"Fehler in zeile 28"
Eine Referenzauswertung wurde vom Server zurückgesendet

bedeutet es, dass ich nich das recht habe diese Infos auszulesen?

vielleicht kann es mir einer erklären wieso und weshalb

Gruß und Danke

koluschkiB
Bitte warten ..
Mitglied: bastla
08.06.2010 um 16:44 Uhr
Hallo koluschkiB!

Wäre Dir auch die Idee gekommen, dass "strUserDN" vielleicht nicht den richtigen Inhalt haben könnte?

Grüße
bastla
Bitte warten ..
Mitglied: koluschkiB
08.06.2010 um 16:57 Uhr
hey Bastla,

daran habe ich schon gedacht und hab in die 28 Zeile, werte Manuelle eingetragen. aber es brachte eben keine erfolg mitsich

Bsp:

cn= Hans Maulwurf
cn= Users
dc=testAD
dc=int

der benutzer Hans Maulwurf ist natürlich angelegt und hat auch n Passwort und das ganze. Check es aber nicht so richtig, wieso und weshalb.
Oder habe ich da irgendwo nen denkfehler und sehe es nicht?

Der User Maulwurf ist ein Bsp. ich verwende natürlich meinen eigenen namen in meiner Domain.

gruß

koluschkiB
Bitte warten ..
Mitglied: bastla
08.06.2010 um 17:27 Uhr
Hallo koluschkiB!

Eigentlich liegt der Fehler ja in Zeile 11 (ich hatte gehofft, Du findest ihn selbst) ...

Wie sieht denn jetzt Deine Zeile 28 (meinetwegen auch mit "Maulwurf") konkret aus?

Grüße
bastla
Bitte warten ..
Mitglied: koluschkiB
09.06.2010 um 08:22 Uhr
Moin Bastla,

also, ich hab einfach das "/" in der 11 Zeile vor CN= weg gemacht und er hat mir dort wenigstens keine Fehlermeldung mehr raus, gehe also davon aus, dass dort einfach dieses Zeichen zuviel war.
Wie dem auch sei, jetzt ist natürlich der Fehler an einer anderen Stelle...

Zeile 34 ---> Das Objekt unterstützt diese Eigenschaft oder Methode nicht: 'PasswordLastChanged'

Hast du nen Tipp was statt dem Password... dort hin schrieben könnte?
Etwas was das Objekt dementsprechend auch kennt?

verstehe auch nicht so ganz, wieso man bei Microsoft Quellcodes mit Fehlern bzw unbekannten dingen bereitstellt... als würde das keiner Testen...

Gruß und Danke für die Hilfe

koluschkiB
Bitte warten ..
Mitglied: koluschkiB
09.06.2010 um 08:32 Uhr
Morgen noch mal,

habs nun PasswordLastChagend ---> pwdlastSet geändert. Leider trritt folgendes problem auf

Das Script gibt mir alles raus ohne einen Fehler zu versuchen, aber...

Das Datum Stimmt nicht, Das Script zeigt mir, dass das PW 90 Tage Gültig ist. Als System Datum verwendet er 01.01.1900, was eben dazu führt, dass das Password am 30.03.1900 ungültig wird. Das Echo gibt mir auch keinen Wert aus, wann das Passwort geändert wurde. ich gehe davon aus, dass es daran liegt.

1900?? 2010?? hää??

in denn Quellcode habe ich meinen Namen Eingetragen und auch die Domain usw. Ich weiss das mein Password anfang Juli auslaufen wird und nicht am 30. März 1900...

hoffe einer kann mir helfen, ich verzweifel schon langsam

01.
 
02.
'======================================== 
03.
' First, get the domain policy. 
04.
'======================================== 
05.
Dim oDomain 
06.
Dim oUser 
07.
Dim maxPwdAge 
08.
Dim numDays 
09.
   
10.
strDomainDN = "GOE.AD.SYCOR.de" 
11.
strUserDN = strDomainDN & "CN=******* *******,CN=Users,DC=***********,DC=**" 
12.
     
13.
Set oDomain = GetObject("LDAP://" & strDomainDN) 
14.
Set maxPwdAge = oDomain.Get("maxPwdAge") 
15.
 
16.
'======================================== 
17.
' Calculate the number of days that are 
18.
' held in this value. 
19.
'======================================== 
20.
numDays = CCur((maxPwdAge.HighPart * 2 ^ 32) + _ 
21.
                    maxPwdAge.LowPart) / CCur(-864000000000) 
22.
Wscript.Echo "Maximum Password Age: " & numDays 
23.
     
24.
'======================================== 
25.
' Determine the last time that the user 
26.
' changed his or her password. 
27.
'======================================== 
28.
Set oUser = GetObject("LDAP://"& strDomainDN) 
29.
 
30.
'======================================== 
31.
' Add the number of days to the last time 
32.
' the password was set. 
33.
'======================================== 
34.
whenPasswordExpires = DateAdd("d", numDays, oUser.pwdlastset) 
35.
     
36.
Wscript.Echo "Password Last Changed: " & oUser.pwdlastset 
37.
Wscript.Echo "Password Expires On: " & whenPasswordExpires 
38.
 
39.
'======================================== 
40.
' Clean up. 
41.
'======================================== 
42.
Set oUser = Nothing 
43.
Set maxPwdAge = Nothing 
44.
Set oDomain = Nothing 
45.
 
46.
Wscript.Echo "Done"
danke im vorraus

koluschkiB
Bitte warten ..
Mitglied: koluschkiB
09.06.2010 um 08:43 Uhr
Hab auch schon mit folgendem Quellcode versucht die Passwortgültigkeit auszulesen;

01.
 
02.
 
03.
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
04.
Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D 
05.
Const ONE_HUNDRED_NANOSECOND    = .000000100 
06.
Const SECONDS_IN_DAY            = 86400 
07.
 
08.
Set objUser = GetObject("LDAP://CN=******* *******,CN=Users,DC=***********,DC=**") 
09.
 
10.
intUserAccountControl = objUser.Get("userAccountControl") 
11.
If intUserAccountControl And ADS_UF_DONT_EXPIRE_PASSWD Then     ' LINE 11 
12.
    WScript.Echo "The password does not expire." 
13.
    WScript.Quit 
14.
Else 
15.
    dtmValue = objUser.PasswordLastChanged 
16.
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then               ' LINE 16 
17.
        WScript.Echo "The password has never been set." 
18.
        WScript.Quit 
19.
    Else 
20.
        intTimeInterval = Int(Now - dtmValue) 
21.
        WScript.Echo "The password was last set on " & _ 
22.
          DateValue(dtmValue) & " at " & TimeValue(dtmValue)  & vbCrLf & _ 
23.
          "The difference between when the password was last" & vbCrLf & _ 
24.
          "set and today is " & intTimeInterval & " days" 
25.
    End If 
26.
 
27.
    Set objDomain = GetObject("LDAP://DC=***********,DC=**") 
28.
    Set objMaxPwdAge = objDomain.Get("maxPwdAge") 
29.
 
30.
    If objMaxPwdAge.LowPart = 0 Then 
31.
        WScript.Echo "The Maximum Password Age is set to 0 in the " & _ 
32.
                     "domain. Therefore, the password does not expire." 
33.
        WScript.Quit 
34.
    Else 
35.
        dblMaxPwdNano = _ 
36.
            Abs(objMaxPwdAge.HighPart * 2^32 + objMaxPwdAge.LowPart) 
37.
        dblMaxPwdSecs = dblMaxPwdNano * ONE_HUNDRED_NANOSECOND  ' LINE 37 
38.
        dblMaxPwdDays = Int(dblMaxPwdSecs / SECONDS_IN_DAY)     ' LINE 38 
39.
        WScript.Echo "Maximum password age is " & dblMaxPwdDays & " days" 
40.
 
41.
        If intTimeInterval >= dblMaxPwdDays Then 
42.
            WScript.Echo "The password has expired." 
43.
        Else 
44.
            WScript.Echo "The password will expire on " & _ 
45.
              DateValue(dtmValue + dblMaxPwdDays) & " (" & _ 
46.
              Int((dtmValue + dblMaxPwdDays) - Now) & " days from today)." 
47.
        End If 
48.
    End If 
49.
End If
Leider ebenfalls ohne erfolg. Fehler in Zeile 8.

----> Eine Referenzauswertung wurde vom Server zurückgesendet

Dabei sind die Werte im LDAP richtig, hab sie aus dem anderem Quellcode übernommen.
Ich chechs einfach nicht

Gruß

koluschkiB
Bitte warten ..
Mitglied: koluschkiB
09.06.2010 um 10:54 Uhr
Mahlzeit

Problem gelöst und Auftrag erfolgreich Abegschlossen

01.
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
02.
Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D 
03.
Const ONE_HUNDRED_NANOSECOND    = .000000100 
04.
Const SECONDS_IN_DAY            = 86400 
05.
 
06.
Set objADSystemInfo = CreateObject("ADSystemInfo")             
07.
Set objUser = GetObject("LDAP://" & objADSystemInfo.UserName)   
08.
 
09.
Set objDomain = GetObject("LDAP://" & objADSystemInfo.DomainDNSName) 
10.
Set objMaxPwdAge = objDomain.Get("maxPwdAge") 
11.
 
12.
intUserAccountControl = objUser.Get("userAccountControl") 
13.
 
14.
dtmValue = objUser.PasswordLastChanged 
15.
 
16.
dblMaxPwdNano = _ 
17.
Abs(objMaxPwdAge.HighPart * 2^32 + objMaxPwdAge.LowPart) 
18.
dblMaxPwdSecs = dblMaxPwdNano * ONE_HUNDRED_NANOSECOND 
19.
dblMaxPwdDays = Int(dblMaxPwdSecs / SECONDS_IN_DAY) 
20.
 
21.
If Int((dtmValue + dblMaxPwdDays) - Now) < 30 Then 
22.
Wscript.Echo "Das Passwort muss geändert werden, es läuft in " & Int((dtmValue + dblMaxPwdDays) - Now) & "Tagen ab. Um dies zu tun drücken Sie Strg+F1" 
23.
Else 
24.
Wscript.Quit 
25.
End If 
26.
 
Danke an alle die mich dabei mit Hilfestellungen unterstürtzt haben

Gruß

KoluschkiB
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Windows Userverwaltung
PS Skript AD Objekte auslesen (1)

Frage von m.reeger zum Thema Windows Userverwaltung ...

Windows Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Entwicklung
Zählerstände über SNMP und VBS auslesen (4)

Frage von motofuzy zum Thema Entwicklung ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...