ndb-str
Goto Top

lokales Adminkennwort ändern

Wenn ich das VB-Script mit einer dazugehörigen Rechnerliste (ca. 30 Stck.) ausführe kommt die Meldung: Fehler 424 Objekt erforderlich und
es wird kein Kennwort geändert. Habe es auch schon mit 4 Rechnern in der Liste probiert. Da kommt die Fehlermeldung immer beim letzten Rechner.
Woran kann es liegen ?


'##############################################################  
'## Ändern des Kennwortes für den lokal_adm mehrerer Rechner ##  
'##############################################################  


' --- Devbuglevel festlegen (0 oder 1)  

	gblDebug = 0



' --- globale Objekte und Variablen  

	Dim gblDebug
	Dim gstrSkriptPfad
	Dim gstrRechnerliste
	Set goWSHShell = WScript.CreateObject("WScript.Shell")  
	Set goMSIE = CreateObject("InternetExplorer.Application")  


' --- Sonstige Objekte und Variablen  

	Dim strComputer
	Dim strFehlernummer
	Dim strFehlerbeschreibung
	Dim strNeuesPasswort



' --- Skriptpfad ermitteln:  

	gstrSkriptPfad = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - Len(WScript.ScriptName))

	if gblDebug then msgbox(gstrSkriptPfad)

' --- FileSystem Objekt erzeugen:  

      Set objFSO = CreateObject("Scripting.FileSystemObject")  




' --- Festlegen der Logdatei:  

	gstrLog = gstrSkriptPfad& "change_pwd.csv"  

	if gblDebug then msgbox(gstrLog)


	if gblDebug then msgbox("Protokolldatei existiert bereits? " & objFSO.FileExists(gstrLog))  
	if not objFSO.FileExists(gstrLog) then

		set objLogFile = objFSO.CreateTextFile(gstrLog,2)
		objLogFile.WriteLine("Computer,Änderungsdatum,Änderungszeit,PasswordAge,Fehlernummer,Fehlerbeschreibung")  


	else
		
		set objLogFile = objFSO.OpenTextFile(gstrLog,8)
		
	End If




' --- Festlegen der Rechnerliste:  

	gstrRechnerliste = gstrSkriptPfad& "rechnerliste.txt"  

	if gblDebug then msgbox(gstrRechnerliste)



' --- nur weitermachen, wenn die Rechnerliste existiert  

	if not objFSO.FileExists(gstrRechnerliste) then
		strErr = "Die angegebene Rechnerliste existiert nicht!!! Das Programm wird beendet."  
		msgbox(strErr)
		WScript.Quit
	End If


' ### IE - Ausgabefenster aufrufen  
	'Call SetupMSIE()  
	
	' --- Setup für ein Internetexplorerfenster  

	Call sbSetupMSIE()



        

On Error Resume Next

strNeuesPasswort=InputBox("Geben Sie das neue Passwort ein","NEUES PASSWORT")  



goMSIE.Document.Write "<HTML><head><TITLE>'Fortschritt beim Ändern der Passwörter'</TITLE></HEAD><BODY bgcolor=#ffffff>"  





Set objTextFile = objFSO.OpenTextFile(gstrRechnerliste, 1)

	Err.Clear ' Leeren des Fehlerobjektes  
	if gblDebug then MsgBox("Beim Öffnen der Rechnerliste-Datei ist folgender Fehler aufgetreten: " & Err.Number & " " & Err.Description)  



Do Until objTextFile.AtEndOfStream

	On Error Resume Next

	Set objUser = nothing

    	strComputer = objTextFile.Readline

		if gblDebug then msgbox(strComputer)

	Err.Clear ' Leeren des Fehlerobjektes  
	Set objUser = GetObject("WinNT://" & strComputer & "/lokal_adm, user")  

		if gblDebug then msgbox("Fehler beim Erstellen des objUser: " & Err.Number & " " & Err.Description)  

	
	Err.Clear ' Leeren des Fehlerobjektes  

	objUser.SetPassword strNeuesPasswort

		if gblDebug then msgbox("Fehler beim Ändern des Passworts: " & Err.Number & " " & Err.Description)  

	strAenderungszeit=Date & "," & Time  
	strFehlernummer=""  
	strFehlerbeschreibung=""  
	strFehlernummer="Fehler " & Err.Number  
	strFehlerbeschreibung=Err.Description

	Err.Clear ' Leeren des Fehlerobjektes  


	objUser.SetInfo 

	PasswordAge = "?"  
	PasswordAge = objUser.get("PasswordAge")  


		if gblDebug then MsgBox("Beim Setzen des Passworts ist folgender Fehler aufgetreten: " & strFehlernummer & " " & strFehlerbeschreibungn)  
		


		if gblDebug then MsgBox("Beim Ermitteln des Passwort-Alters ist folgender Fehler aufgetreten: " & Err.Number & " " & Err.Description)  

		if gblDebug then msgbox("Password am Computer" & strComputer & " vor " & PasswordAge & " s geändert")  


		Err.Clear ' Leeren des Fehlerobjektes  

	
		objLogFile.WriteLine(strComputer & "," & strAenderungszeit & "," & PasswordAge & "," & strFehlernummer & "," & strFehlerbeschreibung)  
		goMSIE.Document.Write strComputer & "," & strAenderungszeit & "," & PasswordAge & "," & strFehlernummer & "," & strFehlerbeschreibung &"<br>"  

		if gblDebug then MsgBox("Beim Schreiben der Log-Datei ist folgender Fehler aufgetreten: " & Err.Number & " " & Err.Description)  
	

Loop


goMSIE.Document.Write "</BODY></HTML>"  

objTextFile.Close
objLogFile.close

set objTextFile = nothing
objLogFile = nothing

msgbox("Fertig, ein Protokoll der durchgeführten Änderungen finden Sie unter " & gstrLog)  

goMSIE.Quit
	
WScript.quit





'-------------------------------------------------------------------------------------------------------------------  
'                                   HILFS UND SUBROUTINEN  
'-------------------------------------------------------------------------------------------------------------------  
	
	Sub sbSetupMSIE
		goMSIE.Navigate "About:Blank"  
		goMSIE.ToolBar = False
		goMSIE.StatusBar = False
		goMSIE.Resizable = False
	
		Do
		Loop While goMSIE.Busy
	
		SWidth = goMSIE.Document.ParentWindow.Screen.AvailWidth
		SHeight = goMSIE.Document.ParentWindow.Screen.AvailHeight
		goMSIE.Width = 500
		goMSIE.Height = 400
		goMSIE.Left = 10
		goMSIE.Top = 10
	
		goMSIE.Visible = True
	End Sub
	
	Sub MSILeer()
		goMSIE.Document.Write "<BR>"  
	End Sub

Content-ID: 128456

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

Ausgedruckt am: 25.11.2024 um 14:11 Uhr

Biber
Biber 02.11.2009 um 20:02:38 Uhr
Goto Top
Vielleicht kommt die Fehlermeldung nicht beim letzten, sondern nach dem letzten Rechner wegen des fehlenden Wortes "Set" vor "objLofFile =nothing" ?

Ich bin echt beeindruckr, mit wie wenig Mitteln sich ein Eigentlich-4-Zeilen-Skriptchen praktisch unwartbar machen lässt.

Ich werd mich wohl auch mal in VB-wie-heißt-das-Geraffel? einlesen...
ndb-str
ndb-str 03.11.2009 um 17:32:12 Uhr
Goto Top
Hallo, habe den Fehler gefunden.
Es lag an der txt.Datei mit den Rechnernamen. Darin befanden sich mehrere Leerzeichen die
durch das Listenexportieren aus dem AD entstanden sind.
Jetzt funktioniert es
curlybiggelow
curlybiggelow 10.11.2009 um 08:42:40 Uhr
Goto Top
Wir hatten früher mal (in den 80ern) einen Fortran-74-Dialekt auf den Microprozessor-Consolen - das sah ähnlich geschwätzig aus. Das hat der Compiler natürlich hinterher alles rausgefetzt, aber die Quelltexte waren ähnlich schön ... schöne alte Zeiten ... da war das Datenwort noch 4 Bit breit, meistens ... wie hiessen diese Kisten noch gleich ? 'Computer für Menschen' war der Werbetext ... war mit nichts kompatibel, ausser mit sich selbst ... naja