novae7
Goto Top

VBScript für PW änderung der Lokalen Admins im Netzwerk

back-to-topInhalt


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.

back-to-topDie 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.

back-to-topDas 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:

  1. 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.
  2. 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.
  3. 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 ;)

Content-ID: 65235

Url: https://administrator.de/contentid/65235

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

29116
29116 20.08.2007 um 18:16:14 Uhr
Goto Top
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
novae7
novae7 20.08.2007 um 19:40:45 Uhr
Goto Top
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
Egbert
Egbert 28.08.2007 um 16:46:03 Uhr
Goto Top
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
TuXHunt3R
TuXHunt3R 06.09.2007 um 21:21:24 Uhr
Goto Top
@ jkr

Wo befindet sich die passwd.exe? Habe ich nicht gefunden.
29116
29116 07.09.2007 um 10:07:24 Uhr
Goto Top
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
TuXHunt3R
TuXHunt3R 07.09.2007 um 20:45:44 Uhr
Goto Top
@ jkr

Danke, schaue ich mir mal an