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

Wie kann man mit einer .CMD in einer AD die verbleibende Gültigkeit des Passwortes ermitteln

Frage Entwicklung Batch & Shell

Mitglied: TomTomBon

TomTomBon (Level 1) - Jetzt verbinden

10.05.2014, aktualisiert 21:40 Uhr, 2271 Aufrufe, 12 Kommentare

Hallo und Moinmoin.

Ich werde erst etwas ausholen um die Hintergründe etwas zu erläutern und dann, kenntlich, zur eigentlichen Frage zu kommen

Vorwort:

Ich bin im IT Support bei einer mittelgroßen Firma im Onsite Team.
Unter anderem supporte ich auch mit den Vorstand.
Unser Ansehen ist bei den Anwendern recht gut, deswegen kommen die auch gerne zu uns.

Wie auch immer,
jetzt ist den IT Chefs etwas ziemlich .... "dummes" ist das falsche Wort, aber... eingefallen.
Und zwar haben Sie sich die neue BES Struktur andrehen lassen mit dem Q10.
Dieses wird bei uns verschlüsselt und über Pull betrieben.
Das heißt das man immer ein Geräte Passwort eingeben muss.
Das finde ich nicht schlecht an sich.
Was nur nicht so schön ist, ist die Einstellung das das PW alle 90 Tage geändert werden muss.

Was richtig sch***limm daran ist, ist das die Anwender darüber nicht informiert werden.

Das sie nicht nur das Geräte Passwort neu eingeben müssen, sondern nach der Änderung ihr Windows Passwort auf dem BB erneut eingeben müssen!
Und ausbaden dürfen wir es.
Und da unser Vorstand nicht sehr Technik Affin ist, bis auf den CTO , ich ebenfalls sehr.

Auf unsere Kritik diesbezüglich hingewiesen, wurde gesagt das das nicht lösbar ist.

Dies wollen wir nicht so hinnehmen und haben nachgedacht.



Das ZIEL:

Das Ziel ist, dass das Startskript, das eh immer beim Starten durchläuft, überprüft, ob die Restdauer, bis man das Passwort ändern muss, unter einen einstellbaren Wert, z.b. 14 Tagen, fällt.
Bzw. wieder genau 90 Tage sind.
Sprich das das PW eben geändert wurde.
Dann soll jeweils ein (anderes) Textfenster aufgehen mit einer Erinnerung an das BB.
Das BEIDE Passwörter dort zu ändern sind


Kein heroisches Ziel, sondern eine praktische Erleichterung.
Für uns

Mir kam gleich der Befehl
net user /domain %username%
in den Kopf der u.a. DAS anzeigt.
Und leider hat mich mein Linux lehrer in der Beziehung damals etwas "versaut":
Wir haben Skripten etwas gelernt.
Aber unter Linux.
Und dort ist mir gleich eine pipe in den Kopf gekommen bzw irgendeine Variable gab es da.
Deswegen habe ich gesagt das ich mal schaue

Nur arbeiten wir mit Windows.
Mittlerweile fast ausschließlich 7.


Zu mir:
Ich habe, wie schon erwähnt, während meiner Ausbildung etwas mit Skripten unter Linux zu tun.
Und ich habe auch schon ein paar Skripte als CMD hin bekommen.
Ich habe aber keine Veranlagungen zum Programmieren


Ja, ich muss zugeben das ich mir meine Skripte zusammen "klaue".
Hier etwas her und dort etwas her.
Und das zu der Funktion zusammen schreiben die ich benötige.
Mit viel Testen.

Aber ich glaube das ist zu 90% so beim programmieren.


Wie auch immer,
ich habe mir zwar Power Shell etwas angesehen, bin aber aus einem einfachen Grund noch nicht dort eingestiegen:
Unter 7 ist es nicht standardmäßig aktiv.
Und für mich ist skripten ein SEHR praktisches Werkzeug.
Nicht weniger, aber auch nicht mehr.
Es ist Arbeit für mich mich einzuarbeiten.
Und wenn ich das nicht für "alles" im Berufsalltag benutzen kann...



Ich habe Skripte gefunden die das Problem vielleicht (!) lösen können.
Die Abfrage nach der verbleibenden Passwort Länge.
Aber was ich gefunden habe war in VBS.

Ich wäre deshalb auch dankbar für Hinweise wie ich "relativ einfach" ein Grundverständniss für VBS entwickeln kann.
Alles Tiefer gehende ist überall Arbeit





Das Konzept was ich mir gedacht habe ist das folgende:

Ich ermittele was der %username% noch für eine verbleibende Zeit hat bis sein PW abläuft.
Mit dem net user /domain Befehl würde ich zwar nur ein Datum bekommen,
aber man kann ja die Differenz zu dem jetzigen Datum errechnen.
In Excel geht das, und bei der CMD habe ich das auch schon mal gesehen.
(Ich weiß das man Excel und CMD NICHT vergleichen kann Aber beides ist ein MS Produkt, und die haben ihre eigene Mentalität).

Wie schon erwähnt würde eines von 2 Textfenstern aufgehen.
Bei dem Ergebnis von zb x<=14 Tage und y>=88Tage.
Sprich Das bald die Pflicht ansteht PW zu wechseln, bzw der PW wechsel schon stattgefunden hat.




Könnte ich aus der Ausgabe von net user %username% (dadurch das er in der AD ist natürlich >net user /domain %username%<) über eine pipe den Wert von >Kennwort läuft ab< extrahieren?

Ich wäre auch für alle anderen Vorschläge dankbar!

MfG
Thomas D.
Mitglied: jsysde
10.05.2014 um 12:15 Uhr
Mahlzeit.

Hui, ganz schöner Roman.
Wir lösen das ein wenig anders: Auf einem Server läuft ein Powershell-Skript, welches die Zeit bis zum Passwort-Ablauf für alle User ermittelt - liegt der Wert unter 14 Tagen, geht eine Mail an die Benutzer raus; der Text der Mail ist dabei frei editierbar, einen Hinweis darauf, dass das Passwort auch auf dem Berry geändert werden muss lässt sich einbauen, zusammen z.B. mit einem Link ins Intranet, wo dieser Vorgang dann nochmal erläutert wird....

Bevor ich weiterschreibe:
Wäre das eine Lösung für euch?

Setzt eben ein Windows-AD (oder ein wie auch immer geartetes, zentrales Userverzeichnis) voraus und einen Mailserver, der mal eben die Benachrichtigungsmail an die User raushaut.

Cheers,
jsysde
Bitte warten ..
Mitglied: bastla
10.05.2014, aktualisiert um 16:48 Uhr
Hallo TomTomBon!

Per Batch erhältst Du den gesuchten Wert etwa so:
for /f "tokens=4" %%i in ('net user %username% /domain^|findstr /bc:"Kennwort l"') do set "Datum=%%i"
Für die Berechnung der Zeitdauer bis zu diesem Datum ist allerdings Batch nicht wirklich das richtige Werkzeug - dafür würde sich ein (durch den Batch selbst erzeugtes) VBScript (erledigt auch gleich die Ausgabe) aufdrängen - ungetestet zB:
01.
@echo off & setlocal 
02.
set Frist1=14 
03.
set Frist2=88 
04.
 
05.
set "VBS=%temp%\Info.vbs" 
06.
 >%VBS% echo Ablauf=DateValue(WScript.Arguments(0)):Tage=DateDiff("d",Date,Ablauf) 
07.
>>%VBS% echo If Tage^<=%Frist1% Then MsgBox("Passwortablauf in "^&Tage^&" Tagen!") 
08.
>>%VBS% echo If Tage^>=%Frist2% Then MsgBox("Passwortwechsel vor Kurzem erfolgt!") 
09.
 
10.
for /f "tokens=4-7 delims=/ " %%i in ('net user %username% /domain^|findstr /bc:"Kennwort l"') do set "M=%%i" & set "T=%%j" & set "J=%%k" 
11.
if /i "%M%" neq "Nie" %VBS% %T%.%M%.%J%
Grüße
bastla
Bitte warten ..
Mitglied: TomTomBon
10.05.2014 um 19:49 Uhr
Leider nicht wirklich.

Da kommen wir in einen anderen Bereich der IT rein.
Und DER liegt in Indien.
Da haben wir zwar gute Kontakte hin, aber die sind erzkonservativ

Aber eine Möglichkeit die bei einem klarer strukturierten Unternehmen klappen wird ist das denke ich auf jeden Fall,

Danke!
Bitte warten ..
Mitglied: TomTomBon
10.05.2014 um 20:31 Uhr
Das muss ich nächste Woche mal testen.

Hört sich sehr interessant an.

Und ich hätte gleich ein paar Fragen

- Hast du quellen wo man sich etwas in VBS einlesen kann?
- ein paar Verständnis fragen zu deinem ersten Schnippsel:
for /f "tokens=4" %%i in ('net user %username% /domain^|findstr /bc:"Kennwort l"') do set "Datum=%%i"



for /f "tokens=4" %%i in ('net user %username% /domain

-> heißt für mich das eine for schleife gestartet wird, die den 4ten "satz" der net user Abfrage in die Variable i schreibt.

die interpretation passt nicht

^|findstr /bc:"Kennwort l"')
-> du übergibst das Ergebnis an findstr und läßt Kennwort läuft ab suchen

do set "Datum=%%i"
->du schreibst i in die Variable Datei
hat dies einen bestimmten Grund?
Oder nur der "optik" wegen?

Danke

Thomas D.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 10.05.2014, aktualisiert 11.05.2014
Hallo Thomas,
oder du nimmst folgendes VBS-Script, welches sich die Informationen des aktuell anmeldenden Nutzers direkt aus dem ActiveDirectory zieht (normal Benutzerrechte reichen dafür völlig aus) und daraus die entsprechende Information bzw. Meldung für den User generiert:
(Die Warnschwelle lässt ich in der Konstanten WARNDAYS festlegen)
01.
On Error Resume Next 
02.
 
03.
Const WARNDAYS = 14 
04.
'------------------- 
05.
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
06.
Set objSysInfo = CreateObject("ADSystemInfo")  
07.
Set objUserLDAP = GetObject ("LDAP://" & objSysInfo.Username) 
08.
intCurrentValue = objUserLDAP.Get("userAccountControl") 
09.
  
10.
If not intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then 
11.
    dateChanged = objUserLDAP.PasswordLastChanged 
12.
    intPWAlter = int(now - dateChanged) 
13.
    Set objDomainNT = GetObject("WinNT://" & objSysinfo.DomainShortName) 
14.
    intMaxPwdAge = objDomainNT.Get("MaxPasswordAge") 
15.
    If intMaxPwdAge > 0 Then 
16.
	intMaxPwdAge = (intMaxPwdAge/86400) 
17.
	dateAblauf = DateValue(dateChanged + intMaxPwdAge) 
18.
        If intPWAlter < intMaxPwdAge and int(dateAblauf-now) <= WARNDAYS then 
19.
		msgbox "ACHTUNG: Ihr Passwort läuft in " & int(dateAblauf-now) & " Tag(en) ab." & vbNewline & "Bitte ändern sie es rechtzeitig vor Ablauf am " & dateAblauf & " !", vbExclamation  
20.
        End If 
21.
    End If 
22.
End If
Zur Info: Wenn das Script als Logon-Script eingebunden werden soll muss natürlich die entsprechende GPO zum sichtbaren Ausführen von Logon-Scripts aktiviert sein, sonst sehen die User die Message-Box nicht.

VBS/WSH Developer Referenzen und Tutorials findest du hier:

Grüße Uwe
Bitte warten ..
Mitglied: bastla
LÖSUNG 10.05.2014, aktualisiert um 21:40 Uhr
Hallo TomTomBon!
heißt für mich das eine for schleife gestartet wird, die den 4ten "satz" der net user Abfrage in die Variable i schreibt.
Nope - "tokens" sind die Bestandteile einer Zeile (getrennt durch - defaultmäßig - Leerzeichen oder TAB), demzufolge also eher "Felder". Die Schleife verarbeitet alle "Sätze" (Zeilen), die sich aus dem geklammerten Teil ergeben - in diesem Fall also nur die eine Zeile der Art
Kennwort läuft ab                   5/21/2014 7:46 AM
da vorweg die Ausgabe des "net use" per "findstr" nach Zeilen, die mit "Kennwort l" beginnen, gefiltert wird. Token 4 ist (da mehrere aufeinander folgende Trennzeichen - hier die Leerzeichen nach "ab" - nur als eines zählen) "5/21/2014" (Token 5 und 6 wären demnach "7:46" und "AM"). Dieses Token stellt den Inhalt von %%i dar und wird zur weiteren Verwendung der Variablen %Datum% zugewiesen.
Oder nur der "optik" wegen?
Tatsächlich ließe sich nach dem "do" die Variable %%i gleich unmittelbar weiter verwenden; wenn allerdings die "for"-Schleife verlassen wird, existiert %%i nicht mehr, daher die Zwischenspeicherung.

Im zweiten Ansatz habe ich übrigens das Datum gleich in seine Bestandteile zerlegt (und dazu als Trennzeichen Leerzeichen und "/" vorgegeben) - daraus entstehen dann die Variablen %%i, %%j und %%k.

Grüße
bastla
Bitte warten ..
Mitglied: TomTomBon
10.05.2014 um 21:34 Uhr
Mit Hilfe von Notepad++ verstehe ich das Skript sogar
Wie gesagt, schreiben kann ich die Skripte nicht wirklich.
Aber verstehen uns aus Bausteinen zusammenbauen.

Und ich würde sonst einfach Textdateien öffnen lassen
Mir doch egal wenn der AW sie ändert.
Ich will ihm HELFEN, nicht einschränken.

Danke Sehr!

Schönes Wochenende noch.

Mfg Thomas D
Bitte warten ..
Mitglied: TomTomBon
10.05.2014 um 21:40 Uhr
Gut dumm gefragt ist halb gelernt

Danke

Ich denke ich werde mir was nächste Woche zusammenschreiben können und in unserer Umgebung testen.

Ich werde das Ergebnis dann hier mal reinstellen.

Wie gesagt, die Texte sind nicht so wichtig.
Da gibt es eh immer unterschiedliche Vorlieben.

Jetzt werde ich eh nicht mehr testen da es sich im Lichte des Laptop Monitores so schlecht schreiben läßt

Thx
Thomas D
Bitte warten ..
Mitglied: TomTomBon
13.05.2014, aktualisiert um 16:02 Uhr
Also bisher klappt das gut.

Muss nur noch durchgetestet werden und angenommen werden.

Ich habe es mit VBS gemacht.
Und unsere Erneuerungszeiten sind unglaubliche 180 Tage.

Hier ist das Script (Ich habe auch eine Sprachabfrage eingebaut. Da muss ich noch etwas dran basteln )

01.
':source:	http://www.administrator.de/content/detail.php?id=237659#comment-922659 
02.
':source:	http://www.hardwareluxx.de/community/f24/vbscript-sprache-des-os-auslesen-745232.html 
03.
 
04.
On Error Resume Next 
05.
 
06.
Const WARNDAYS = 10 
07.
Const erneuert = 179 
08.
'------------------- 
09.
'------------------- 
10.
 
11.
Dim ObjWMI : Set ObjWMI = GetObject("winmgmts:\\.\root\CIMV2") 
12.
PUBLIC LANGID 
13.
PUBLIC LANGLE 
14.
 
15.
DIM colItems : Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem") 
16.
 
17.
For Each objItem in colitems 
18.
	LANGID = objItem.Locale  
19.
Next 
20.
 
21.
Select Case LANGID 
22.
	Case "0409" : LANGLE = "EN"	'English (United States) 
23.
	Case "0407" : LANGLE = "DE"	'German (Standard) 
24.
	 
25.
 
26.
	End Select 
27.
 
28.
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
29.
Set objSysInfo = CreateObject("ADSystemInfo")  
30.
Set objUserLDAP = GetObject ("LDAP://" & objSysInfo.Username) 
31.
intCurrentValue = objUserLDAP.Get("userAccountControl") 
32.
  
33.
If not intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then 
34.
    dateChanged = objUserLDAP.PasswordLastChanged 
35.
    intPWAlter = int(now - dateChanged) 
36.
    Set objDomainNT = GetObject("WinNT://" & objSysinfo.DomainShortName) 
37.
    intMaxPwdAge = objDomainNT.Get("MaxPasswordAge") 
38.
     
39.
	If intMaxPwdAge > 0 Then 
40.
		intMaxPwdAge = (intMaxPwdAge/86400) 
41.
		dateAblauf = DateValue(dateChanged + intMaxPwdAge) 
42.
         
43.
'		MsgBox "Your Language is: " & LANGID, vbExclamation 
44.
		 
45.
		If LANGID = "0407" Then 
46.
		 
47.
			If intPWAlter < intMaxPwdAge and int(dateAblauf-now) <= WARNDAYS then 
48.
				msgbox "ACHTUNG: Ihr Passwort läuft in " & int(dateAblauf-now) & " Tag(en) ab." & vbNewline & "Bitte ändern sie ihr Windows Passwort rechtzeitig vor Ablauf am " & dateAblauf & " !" & vbNewline & vbNewline & "Bitte vergessen Sie anschließend nicht an ihrem Blackberry das Windows Passwort erneut einzugeben und ein neues Geräte Password zu vergeben.", vbExclamation  
49.
			 
50.
			End If 
51.
	 
52.
			If intPWAlter < intMaxPwdAge and int(dateAblauf-now) >= erneuert then 
53.
				msgbox "ACHTUNG: Sie haben ihr Passwort geaendert!" & vbNewline & vbNewline & vbNewline & "Bitte vergessen Sie NICHT an ihrem Blackberry das Windows Passwort erneut einzugeben und ein neues Geräte Password zu vergeben!", vbExclamation  
54.
			End If 
55.
		 
56.
		End If 
57.
		 
58.
		If LANGID = "0409" OR "0809" Then  
59.
		 
60.
			If intPWAlter < intMaxPwdAge and int(dateAblauf-now) <= WARNDAYS then 
61.
				msgbox "ATTENTION: Your Password ended after " & int(dateAblauf-now) & " days." & vbNewline & "Please change your windows Logon Password until " & dateAblauf & " !" & vbNewline & vbNewline & "Be attend to change the Windows Password at the Blackberry and the Blackberry device Password.", vbExclamation  
62.
			 
63.
			End If 
64.
	 
65.
			If intPWAlter < intMaxPwdAge and int(dateAblauf-now) >= erneuert then 
66.
				msgbox "ATTENTION: You has changed your Windows Password!" & vbNewline & vbNewline & vbNewline & "Do NOT forget to actualize the Windows Password and to change the Blackberry device Password!", vbExclamation  
67.
			End If 
68.
		 
69.
		End If 
70.
		 
71.
	End If 
72.
	 
73.
End If
Bitte warten ..
Mitglied: TomTomBon
21.05.2014, aktualisiert um 13:51 Uhr
Das fertige Script, das noch immer nicht genehmigt ist.
Fürs Scharfschalten sotte Warndays natürlich NICHT so hoch gesetzt sein


01.
':source:	http://www.administrator.de/content/detail.php?id=237659#comment-922659 
02.
':source:	http://www.hardwareluxx.de/community/f24/vbscript-sprache-des-os-auslesen-745232.html 
03.
 
04.
' Author: Thomas Dethlefs	Thomas.Dethlefs@gmx.net  
05.
' ver: 0.2 
06.
 
07.
On Error Resume Next 
08.
 
09.
'Warndays= wieviele Tage vor ablauf Passwort warnt Script 
10.
'erneuert= ERINNERT an erneuerung der Passworter auf dem BB 
11.
 
12.
Const WARNDAYS = 178 
13.
Const erneuert = 179 
14.
'------------------- 
15.
'------------------- 
16.
 
17.
Dim ObjWMI : Set ObjWMI = GetObject("winmgmts:\\.\root\CIMV2") 
18.
PUBLIC LANGID 
19.
PUBLIC LANGLE 
20.
 
21.
DIM colItems : Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem") 
22.
 
23.
For Each objItem in colitems 
24.
	LANGID = objItem.Locale  
25.
Next 
26.
 
27.
 
28.
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
29.
Set objSysInfo = CreateObject("ADSystemInfo")  
30.
Set objUserLDAP = GetObject ("LDAP://" & objSysInfo.Username) 
31.
intCurrentValue = objUserLDAP.Get("userAccountControl") 
32.
  
33.
If not intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then 
34.
    dateChanged = objUserLDAP.PasswordLastChanged 
35.
    intPWAlter = int(now - dateChanged) 
36.
    Set objDomainNT = GetObject("WinNT://" & objSysinfo.DomainShortName) 
37.
    intMaxPwdAge = objDomainNT.Get("MaxPasswordAge") 
38.
     
39.
	If intMaxPwdAge > 0 Then 
40.
		intMaxPwdAge = (intMaxPwdAge/86400) 
41.
		dateAblauf = DateValue(dateChanged + intMaxPwdAge) 
42.
         
43.
'		MsgBox "Your Language is: " & LANGID, vbExclamation 
44.
		 
45.
		If LANGID = "0407" Then 
46.
'Abfrage ob das OS auf deutsch ist. Dann DIESE Ausgabe: 
47.
' INformation das PW Änderung ansteht: 
48.
		 
49.
			If intPWAlter < intMaxPwdAge and int(dateAblauf-now) <= WARNDAYS then 
50.
				msgbox "ACHTUNG: Ihr Passwort läuft in " & int(dateAblauf-now) & " Tag(en) ab." & vbNewline & "Bitte ändern sie ihr Windows Passwort rechtzeitig vor Ablauf am " & dateAblauf & " !" & vbNewline & vbNewline & "Bitte vergessen Sie anschließend nicht an ihrem Blackberry das Windows Passwort erneut einzugeben und ein neues Geräte Password zu vergeben.", vbExclamation  
51.
			 
52.
			End If 
53.
 
54.
' ERINNERUNG			 
55.
			If intPWAlter < intMaxPwdAge and int(dateAblauf-now) >= erneuert then 
56.
				msgbox "ACHTUNG: Sie haben ihr Passwort geaendert!" & vbNewline & vbNewline & vbNewline & "Bitte vergessen Sie NICHT an ihrem Blackberry das Windows Passwort erneut einzugeben und ein neues Geräte Password zu vergeben!", vbExclamation  
57.
			End If 
58.
		  
59.
		Else  
60.
'Bei JEDER anderen OS Sprache ausser Deutsch wird diese Englische Aussage als Text box ausgegeben: 
61.
' INformation das PW Änderung ansteht: 
62.
 
63.
			If intPWAlter < intMaxPwdAge and int(dateAblauf-now) <= WARNDAYS then 
64.
				msgbox "ATTENTION: Your Password ended after " & int(dateAblauf-now) & " days." & vbNewline & "Please change your windows Logon Password until " & dateAblauf & " !" & vbNewline & vbNewline & "Be attend to change the Windows Password at the Blackberry and the Blackberry device Password.", vbExclamation  
65.
			 
66.
			End If 
67.
 
68.
' ERINNERUNG 
69.
			 
70.
			If intPWAlter < intMaxPwdAge and int(dateAblauf-now) >= erneuert then 
71.
				msgbox "ATTENTION: You has changed your Windows Password!" & vbNewline & vbNewline & vbNewline & "Do NOT forget to actualize the Windows Password and to change the Blackberry device Password!", vbExclamation  
72.
			End If 
73.
		 End If 
74.
		 
75.
	End If 
76.
	 
77.
End If
Bitte warten ..
Mitglied: RobyTheHood
26.11.2015 um 14:18 Uhr
Hallo Zusammen,

Hat jemand mit
folgende Codes für VBS Skript Erfahrung?:
01.
Function PasswordExpires(strDomain,strUser) 
02.
 On Error Resume Next 
03.
 Dim objUser 
04.
 Set objUser=GetObject("WinNT://" & strDomain & "/" & strUser & ",user") 
05.
 PassExp=INT(objUser.MaxPasswordAge/86400)-INT(objUser.PasswordAge/86400) 
06.
 If PassExp <0 Then  
07.
 strPassMsg="Ihr Passwort läuft nie ab." 
08.
 Else 
09.
 strPassMsg="Passwort läuft ab in: " & vbCrLf & PassExp & " Tag(en)" 
10.
 End If 
11.
 PasswordExpires=strPassMsg 
12.
 End Function

bei uns auf Win2008r2x64 für Win7Prox64 und x86 Clients funktionierte bis wenigen Wochen noch einwandfrei.
Seit dem, Jeder Clients, Benutzer Anmeldung, erhält die Code nur mit "Passwort läuft ab in: Tagen" obwohl Unter AC- Benutzer- Benutzer Eigenschaften- Kontooptionen auf "Passwort läuft nie ab" angehakt ist...
Bitte warten ..
Mitglied: colinardo
26.11.2015, aktualisiert um 15:32 Uhr
Hallo RobyTheHood,
du prüfst in deinem Code ja auch nicht auf das "Passwort läuft nie ab"-Flag. Dein Skript kann also so nicht konsistent sein. Deswegen wurde vermutlich auch das "On Error Resume Next" gesetzt.

Das siehst du oben in meinem Code unter:
If not intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then 
Nimm zum Debugging das On Error Resume Next aus deinem Skript, dann bekommst du auch die entsprechende Fehlermeldung und Zeile angezeigt!

funktionierte bis wenigen Wochen noch einwandfrei.
Das kann Zufall gewesen sein, prüft was Ihr in der Domäne verändert habt...

Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Userverwaltung
gelöst Gruppenmitgliedschaft einer AD Gruppe per cmd auslesen (2)

Frage von RamboJay zum Thema Windows Userverwaltung ...

Windows Server
Schemaerweiterung - Office 365 - Exchange Online mit lokalem AD

Frage von chb1982 zum Thema Windows Server ...

Windows Server
Windows Server 2012 R2 Benutzerkonto für Zugriff auf AD Benutzer (2)

Frage von JulianOhm zum Thema Windows Server ...

Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...