VBScript für PW änderung der Lokalen Admins im Netzwerk
Inhalt
Nachdem ich sowas bisher nicht im Internet bzw hier im Forum gefunden hatte,
hab ich mit einem Kollegen ein Script gebastelt welches die Passwörter der Lokalen Adminacc`s im Netzwerk ändert.
Das Script besteht aus einer Access Datenbank+VBScript.
Die Datenbank
Die Datenbank beinhaltet die Rechnernamen und wann die Rechnerpasswörter das letzte mal geändert wurden.Die Datenbank hat eine Tabelle und 4 Spalten.
DBName: computer.mdb
Tabellenname: Computer
Spaltennamen | Typ |
---|---|
"Computer" | Text |
"pw" | Datum/Uhreit |
"Funktion" | Text |
"change" | Zahl |
- Bei "Computer" steht der Computername
- Bei "pw" wann das Passwort zuletzt geändert wurde
- Bei "Funktion" kann man sich Notizen zum Rechner eintragen (z.B.: ChefRechner o.ä.)
- Über "change" prüft er ob er das Passwort neu setzten muss bzw. ob es bereits gesetzt wurde.
Das Script
Das Script zieht sich aus der Datenbank alle Computernamen wo change auf "0" steht.
Dann wird Geprüft ob der Computer Online ist.
Falls der Computer Online ist ändert das Script das Lokale Administratorpasswort auf der Wert der im Script Angegeben ist, dann trägt es bei Datum das aktuelle Datum ein und ändert den change Wert auf "1"
Durch den Changewert wird verhindert das das Passwort bei jedem durchlaufen des Scriptes auf allen Computern neu gesetzt wird obwohl es schon gesetzt wurde.
'#######################SCRIPT BEGINN###########################
'Setzen von Lokalen Administratorpasswörtern bei PC`s die in der Datenbank angegeben sind
' ==============================
Option Explicit
'Deklarieren der Variablen
Dim DBConnection, SqlString, Ergebnismenge, Benutzer, Tabelle, computer, SqlString2, SqlString3
' Erstellen eines Connection-Objektes
Set DBConnection = CreateObject("ADODB.Connection")
' Öffnen der Verbindung zur Datenbank
' Die MDB-Datei muss im selben Verzeichnis liegen wie das Skript
DBConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.computer.MDB;"
' Abfrage der Tabelle Computer
Set Tabelle = CreateObject("ADODB.Recordset")
' Verwendete Connection festlegen
Tabelle.ActiveConnection = DBConnection
' Zugriffsart festlegen
Tabelle.CursorType = 2
' Sperrart festlegen
Tabelle.LockType = 3
' Verwendete Quelle angeben
Tabelle.Source="Computer"
' Tabelle öffnen
Tabelle.Open
' Abfragen der Computer auf den das Passwort geändert werden soll
SqlString="SELECT * FROM computer WHERE change = 0"
' Ausführen der Abfrage und Rückgabe eines Recordsets
Set Ergebnismenge = DBConnection.Execute(SqlString)
' An den Anfang des Recordsets springen
Ergebnismenge.MoveFirst
' Durchlaufe gesamtes Ergebnis
Do While Not Ergebnismenge.eof
If isOnline(Ergebnismenge("Computer"))= "Wahr" then
Set Benutzer = GetObject("WinNT://" & Ergebnismenge("Computer") & "/Administrator,user")
' Hier wird das zu setztende Passwort eingestellt
Benutzer.SetPassword "hier pw eintragen"
' Echo zum Debuggen
' wscript.echo Ergebnismenge("Computer") & " pw gesetzt"
SqlString2="UPDATE computer set pw=date() WHERE computer=" & "'" & Ergebnismenge("Computer") & "'"
' Eintragen des Datums
SqlString3="UPDATE computer set change=1 WHERE computer=" & "'" & Ergebnismenge("Computer") & "'"
DBConnection.Execute(SqlString2)
' Eintragen des Changewertes
DBConnection.Execute(SqlString3)
Else
' Echo zum Debuggen
'wscript.echo Ergebnismenge("Computer") & " pw nicht gesetzt"
End If
'Datensatzzeiger auf den nächsten Datensatz positionieren
Ergebnismenge.MoveNext
Loop
' Recordset schliessen
Ergebnismenge.Close
' Connection schliessen
DBConnection.Close
' Fertigmeldung ausgeben
wscript.echo "Fertsch"
'Funktion zum Überprüfen ob der PC Online ist
Function isOnline(computername)
On Error Resume Next
Set Computer = GetObject("WinNT://" & ComputerName & ",Computer")
isOnline = (Err.number = 0)
On Error Goto 0
End Function
'#######################SCRIPT ENDE#############################
Ich hoffe es ist alles verständlich.
Kritik und/oder Anregungen sind Erwünscht.
So folgende kleinere Probleme sind bekannt:
- Die Computernamen müssen noch per Hand eingetragen werden hab aber schon drüber nachgedacht die Daten per VBS aus dem AD auszulesen und eintragen zu lassen.
- Es dauert ein wenig wenn ein PC nicht online ist da hat mein Kollege schon etwas weitergearbeitet und das über Ping gelöst aber durch das Script blick ich noch nicht so ganz durch deswegen hier noch die "alte" Version.
- wenn man die PW`s nochmal ändern will muss man die "1" bei change wieder auf "0" per Hand setzten... naja dafür Bastel ich mir auch bald was XD hab ja 3 Monate zeit bis zum nächstem PW wechsel ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 65235
Url: https://administrator.de/contentid/65235
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
es geht auch einfacher.
Die Datei passwd.exe beim Login mit Parameter -u administrator -p oldpasswort neupasswort
erledigt das gleiche.
Eine Woche laufen lassen und fertig.
Findet die Datei das neue Passwort passiert nix.
Gruß
jkr
es geht auch einfacher.
Die Datei passwd.exe beim Login mit Parameter -u administrator -p oldpasswort neupasswort
erledigt das gleiche.
Eine Woche laufen lassen und fertig.
Findet die Datei das neue Passwort passiert nix.
Gruß
jkr
hallo zusammen,
das ganze geht auch sehr einfach über eine Gruppenrichtlinienerweiterung von Microsoft selbst.
Das Produkt heisst PolicyMaker, die Firma DesktopStandard wurde von MS im letzten Jahr gekauft.
Policymaker ist im moment noch erhältlich. Es wird aber bald nur noch für Vertragskunden im MDOP erhältlich sein.
Über die Erweiterung des passwortes kann ich auf sichere Art das lokale Kennwort setzen, ändern. Benutzer in Gruppen aufnehmen, löschen usw.
Neben Kontenverwaltung für lokale Clients gibt es noch 21 weitere Client Side Extensions wie Mail Profile, Applikationseinstellungen, Drucker, Ini Files, Files, ODBC verb usw...
Logging geschieht im Eventlog, Replikation der Richtlinien wie gehabt im AD über NTFRS.
Die Kosten halten sich dabei auch in Grenzen und man hat die Chance im moment sehr günstig an komplette Firmenlizenzen zu kommen.
Gruß
Egbert
das ganze geht auch sehr einfach über eine Gruppenrichtlinienerweiterung von Microsoft selbst.
Das Produkt heisst PolicyMaker, die Firma DesktopStandard wurde von MS im letzten Jahr gekauft.
Policymaker ist im moment noch erhältlich. Es wird aber bald nur noch für Vertragskunden im MDOP erhältlich sein.
Über die Erweiterung des passwortes kann ich auf sichere Art das lokale Kennwort setzen, ändern. Benutzer in Gruppen aufnehmen, löschen usw.
Neben Kontenverwaltung für lokale Clients gibt es noch 21 weitere Client Side Extensions wie Mail Profile, Applikationseinstellungen, Drucker, Ini Files, Files, ODBC verb usw...
Logging geschieht im Eventlog, Replikation der Richtlinien wie gehabt im AD über NTFRS.
Die Kosten halten sich dabei auch in Grenzen und man hat die Chance im moment sehr günstig an komplette Firmenlizenzen zu kommen.
Gruß
Egbert
Hallo, die exe kannst Du unter:
http://www.novell.com/coolsolutions/tip/15516.html
finden. Dort hat man auch mehrere Lösungen beschrieben.
Gruß
jkr
http://www.novell.com/coolsolutions/tip/15516.html
finden. Dort hat man auch mehrere Lösungen beschrieben.
Gruß
jkr