VBScript für PW änderung der Lokalen Admins im Netzwerk
01.08.2007
15:08:42 Uhr13866 Aufrufe
6 Antworten
15:08:42 Uhr
6 Antworten
Noch nicht bewertet
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.
01.
'#######################SCRIPT BEGINN########################### 02.
03.
'Setzen von Lokalen Administratorpasswörtern bei PC`s die in der Datenbank angegeben sind 04.
' ============================== 05.
Option Explicit 06.
'Deklarieren der Variablen 07.
Dim DBConnection, SqlString, Ergebnismenge, Benutzer, Tabelle, computer, SqlString2, SqlString3 08.
' Erstellen eines Connection-Objektes 09.
Set DBConnection = CreateObject("ADODB.Connection") 10.
' Öffnen der Verbindung zur Datenbank 11.
' Die MDB-Datei muss im selben Verzeichnis liegen wie das Skript 12.
DBConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.computer.MDB;" 13.
' Abfrage der Tabelle Computer 14.
Set Tabelle = CreateObject("ADODB.Recordset") 15.
' Verwendete Connection festlegen 16.
Tabelle.ActiveConnection = DBConnection 17.
' Zugriffsart festlegen 18.
Tabelle.CursorType = 2 19.
' Sperrart festlegen 20.
Tabelle.LockType = 3 21.
' Verwendete Quelle angeben 22.
Tabelle.Source="Computer" 23.
' Tabelle öffnen 24.
Tabelle.Open 25.
' Abfragen der Computer auf den das Passwort geändert werden soll 26.
SqlString="SELECT * FROM computer WHERE change = 0" 27.
' Ausführen der Abfrage und Rückgabe eines Recordsets 28.
Set Ergebnismenge = DBConnection.Execute(SqlString) 29.
' An den Anfang des Recordsets springen 30.
Ergebnismenge.MoveFirst 31.
' Durchlaufe gesamtes Ergebnis 32.
Do While Not Ergebnismenge.eof 33.
If isOnline(Ergebnismenge("Computer"))= "Wahr" then 34.
Set Benutzer = GetObject("WinNT://" & Ergebnismenge("Computer") & "/Administrator,user") 35.
36.
' Hier wird das zu setztende Passwort eingestellt 37.
Benutzer.SetPassword "hier pw eintragen" 38.
39.
' Echo zum Debuggen 40.
' wscript.echo Ergebnismenge("Computer") & " pw gesetzt" 41.
SqlString2="UPDATE computer set pw=date() WHERE computer=" & "'" & Ergebnismenge("Computer") & "'" 42.
' Eintragen des Datums 43.
SqlString3="UPDATE computer set change=1 WHERE computer=" & "'" & Ergebnismenge("Computer") & "'" 44.
DBConnection.Execute(SqlString2) 45.
' Eintragen des Changewertes 46.
DBConnection.Execute(SqlString3) 47.
Else 48.
' Echo zum Debuggen 49.
'wscript.echo Ergebnismenge("Computer") & " pw nicht gesetzt" 50.
End If 51.
'Datensatzzeiger auf den nächsten Datensatz positionieren 52.
Ergebnismenge.MoveNext 53.
Loop 54.
' Recordset schliessen 55.
Ergebnismenge.Close 56.
' Connection schliessen 57.
DBConnection.Close 58.
' Fertigmeldung ausgeben 59.
wscript.echo "Fertsch" 60.
61.
'Funktion zum Überprüfen ob der PC Online ist 62.
Function isOnline(computername) 63.
On Error Resume Next 64.
Set Computer = GetObject("WinNT://" & ComputerName & ",Computer") 65.
isOnline = (Err.number = 0) 66.
On Error Goto 0 67.
End Function 68.
69.
'#######################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 ;)
novae7 schreibt am 20.08.2007 um 19:40:45 Uhr
Das problem an dem script/befehl ist, aus meiner sicht, aber das ich
1. nicht sehe welche Computer geändert wurden und
2. wenn jemand weiß wo das Script liegt hat er das Admin Passwort (dazu muss man nur den Logonserver kennen)
3. und bei mir sind leider nicht alle Computer innerhalb einer Woche angeschaltet da fahr ich das Script lieber manuell wenn ich weiß der Rechner ist an
bei dem VBScript ist das Passwort im Script und man kommt nur an das Passwort wenn man das Script bekommt wo es drin steht
1. nicht sehe welche Computer geändert wurden und
2. wenn jemand weiß wo das Script liegt hat er das Admin Passwort (dazu muss man nur den Logonserver kennen)
3. und bei mir sind leider nicht alle Computer innerhalb einer Woche angeschaltet da fahr ich das Script lieber manuell wenn ich weiß der Rechner ist an
bei dem VBScript ist das Passwort im Script und man kommt nur an das Passwort wenn man das Script bekommt wo es drin steht
Egbert schreibt am 28.08.2007 um 16:46:03 Uhr
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
jkr schreibt am 07.09.2007 um 10:07:24 Uhr
Hallo, die exe kannst Du unter:
http://www.novell.com/coolsolutions/tip/1 ...
finden. Dort hat man auch mehrere Lösungen beschrieben.
Gruß
jkr
http://www.novell.com/coolsolutions/tip/1 ...
finden. Dort hat man auch mehrere Lösungen beschrieben.
Gruß
jkr







