AD-Scripting
Hallo zusammen,
weiß jemand, wie ich folgende Aufgaben bei Windows Server 2000 / 2003 / 2008 per Script lösen kann:
Danke im Voraus,
André
P.S.: Gibt es im Netz irgendwo eine Vernünftige Anleitung zum AD-Scripting?
weiß jemand, wie ich folgende Aufgaben bei Windows Server 2000 / 2003 / 2008 per Script lösen kann:
- Bei allen Benutzern, bei denen das Kennwort leer ist (die sich also noch kein Kennwort gegeben haben), soll die Option "Benutzer muß Kennwort bei der nächsten Anmeldung ändern" gesetzt werden.
- Bei allen Benutzern, bei denen "Benutzer muß Kennwort bei der nächsten Anmeldung ändern" NICHT gesetzt ist, soll "Kennwort läuft nie ab" aktiviert werden.
Danke im Voraus,
André
P.S.: Gibt es im Netz irgendwo eine Vernünftige Anleitung zum AD-Scripting?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 117215
Url: https://administrator.de/forum/ad-scripting-117215.html
Ausgedruckt am: 02.04.2025 um 02:04 Uhr
3 Kommentare
Neuester Kommentar
Hallo SarekHL!
Sollte sich ("inspiriert" durch zB http://www.nabble.com/Query-for-blank-passwords-in-Active-Directory-td9 ..., http://techtasks.com/code/viewbookcode/1596 oder http://groups.google.com/group/microsoft.public.scripting.vbscript/brow ... ) mit
bzw
machen lassen.
Grüße
bastla
Sollte sich ("inspiriert" durch zB http://www.nabble.com/Query-for-blank-passwords-in-Active-Directory-td9 ..., http://techtasks.com/code/viewbookcode/1596 oder http://groups.google.com/group/microsoft.public.scripting.vbscript/brow ... ) mit
On Error Resume Next
strAdsPath = "dc=fabrikam,dc=com"
Const ADS_SCOPE_SUBTREE = 2
strPassword = ""
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT AdsPath FROM 'LDAP://" & strAdsPath & "' WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strPath = objRecordSet.Fields("AdsPath").Value
Set objUser = GetObject(strPath)
objUser.ChangePassword strPassword, strPassword
If Err= 0 or Err = -2147023569 Then
objUser.Put "pwdLastSet", 0
objUser.SetInfo
WScript.Echo objUser.CN
End If
Err.Clear
objRecordSet.MoveNext
Loop
On Error Resume Next
strAdsPath = "dc=fabrikam,dc=com"
Const ADS_SCOPE_SUBTREE = 2
Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT AdsPath FROM 'LDAP://" & strAdsPath & "' WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strPath = objRecordSet.Fields("AdsPath").Value
Set objUser = GetObject(strPath)
WScript.Echo strPath
Set objPwdLastSet = objUser.pwdLastSet
If (objPwdLastSet.HighPart <> 0) Or (objPwdLastSet.LowPart <> 0) Then
lngFlag = objUser.userAccountControl
WScript.Echo lngFlag
If (lngFlag And ADS_UF_DONT_EXPIRE_PASSWD) = 0 Then
lngFlag = lngFlag Or ADS_UF_DONT_EXPIRE_PASSWD
objUser.userAccountControl = lngFlag
objUser.SetInfo
End If
End If
objRecordSet.MoveNext
Loop
Grüße
bastla
Moin SarekHL,
danke für Dein schnelles und ausführliches Feedback zu bastlas Antwort.
Könntest Du Deine Rückmeldung noch dahingehend vervollständigen, dass
Ohne Rückmeldung nützt eine Frage mit einer Antwort wenig.
Grüße
Biber
danke für Dein schnelles und ausführliches Feedback zu bastlas Antwort.
Könntest Du Deine Rückmeldung noch dahingehend vervollständigen, dass
- Du entweder zurückmeldest "Danke, funktioniert." und den Beitrag auf "Erledigt" setzt oder
- schreibst "Danke, aber ich bekomm es nicht zu Fliegen. Folgender Fehler tritt auf:..."
- oder zurückmeldest : "Meine Tante Klara hat mir ein Hotel auf dem Malediven vererbt. Ich klink mich aus" und den Beitrag auf gelöst setzt.
- oder zurückmeldest: "bastlas Lösungen sind immer so schwer verständlich, ich warte auf Alternativen..."
Ohne Rückmeldung nützt eine Frage mit einer Antwort wenig.
Grüße
Biber