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 ?
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 128456
Url: https://administrator.de/contentid/128456
Ausgedruckt am: 25.11.2024 um 14:11 Uhr
3 Kommentare
Neuester Kommentar
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...
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...
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