ADODB-Provider Kann nicht gefunden werden
367
Christopher Collins
Einen Provider Can't be found
Fehler bekommen Dieses Skript dient zum Umbenennen einer Workstation in der Domäne, während der alte und der neue Name in einer CSV-Datei protokolliert werden.
UPDATE: Das Skript scheint abgeschlossen zu sein, schreibt aber nichts in die .csv. Es benennt den Computer auch nicht um.
' RenamePC.vbs - Windows Logon Script. ' VBScript - Rename Workstation and Log Change ' Author Chris Collins ' Version 1 - July 2018 ' ----------------------------------------------------------' Const JOIN_DOMAIN = 1 Const ACCT_CREATE = 2 Dim sCmpName,sUserType Dim sUser,sPassword,sDomain,sOU Dim strComputer,strSN,objWMIService,objBIOS,colSMBIOS,objShell sUser = "administrator" sPassword = "Password123" sDomain = "Domain" sOU = "OU=New Computers,DC=Domain,DC=k12,DC=az,DC=us" ' ************** Setup ************** ' Folder where CSV File is located ' CSV file should have 1st field = oldname, 2nd field = newname with no header row strCSVFolder = "E:\VBScripts\TestFolder\" ' CSV filename strCSVFile = "computerrename.csv" ' Additional parameters to pass to NetDom command strNetDomParams = " /userd:"+sUser+" /passwordd:"+sPassword+" /usero:"+sUser+" /passwordo:"+sPassword+" /force " '************************************ 'Part 1 - Acquire serial/service tag number strComputer = "." Set objWMIService = GetObject("winmgmts:" & "!\\" & strComputer & "\root\cimv2") ' move the objShell creation to here to ensure it get created Set objShell = CreateObject("Shell.Application") Set colSMBIOS = objWMIService.ExecQuery ("Select * from Win32_SystemEnclosure") For Each objSMBIOS in colSMBIOS strSN = objSMBIOS.SerialNumber If strSN <> "" Then exit For Next 'Part 2 - Ask for Campus sCmpName = InputBox("Enter the Campus the computer is on (BB, DO, HCS, THS, WJM):", "Campus Name") If sCmpName = "" Then Wscript.Echo "Exiting script." Wscript.Quit End If 'Part 3 - Ask for Type sUserType = InputBox("Enter the User Type (CR, LAB, LIB, LP, NB, STAFF, TH). Insert other tags as well (ie -RF):", "User Type") If sUserType = "" Then Wscript.Echo "Exiting script." Wscript.Quit End If 'Part 4 - Assign computer name to serial/service tag number Dim oWMI, oCmp, oOS, sReturn Set oWMI = GetObject("winmgmts:\\.\root\cimv2") For Each oCmp in oWMI.InstancesOf("Win32_ComputerSystem") strNewName = oCmp.Rename (+sCmpName+"-"+sUserType+"-"+strSN) If sReturn <> 0 Then Wscript.Echo "Rename failed. Error = " & Err.Number & _ vbcrlf & "Exiting script." Else Wscript.Echo "Rename successful." strNewName = oCmp.JoinDomainOrWorkgroup(sDomain, sPassword, _ sDomain & "\" & sUser, sOU, JOIN_DOMAIN+ACCT_CREATE) If strNewName <> 0 Then Wscript.Echo "Join domain failed. Error = " & Err.Number & _ vbcrlf & "Exiting script." Else Wscript.Echo "Join domain successful." 'Part 4 - Setup ADO Connection to CSV file SET objShell = wscript.CREATEOBJECT("wscript.shell") SET cn = CREATEOBJECT("ADODB.Connection") SET rs = CREATEOBJECT("ADODB.Recordset") cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & strCSVFolder & ";" & _ "Extended Properties=""text;HDR=NO;FMT=Delimited""" rs.Open "SELECT * FROM [" & strCSVFile & "]", _ cn, adOpenStatic, adLockOptimistic, adCmdText DO until rs.eof strOldName = rs(0) strNewName = rs(1) strCmd = "cmd.exe /C netdom renamecomputer " & strOldName & " /newname:" & strNewName & strNetDomParams intReturn = objShell.Run(strCmd,intWindowStyle,blnWait) IF intReturn = 0 THEN wscript.echo "Renamed '" & strOldName & "' to '" & strNewName & "'" ELSE wscript.echo "Error renaming '" & strOldName & "' to '" & strNewName & "'" END IF rs.movenext Set colComputers = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem") For Each objComputer in colComputers err = objComputer.Rename(strNewName) Next For Each oOS in oWMI.InstancesOf("Win32_OperatingSystem") sReturn = oOS.Reboot Next Loop End If 'Step 5 - Reboot Computer Wscript.Echo "Rebooting computer..." Dim oShell Set oShell = CreateObject("WScript.Shell") 'restart, wait 0 seconds, force running apps to close oShell.Run "%comspec% /c shutdown /r /t 0 /f",, TRUE End If Next
Funktioniert es aus Interesse, wenn Sie das Skript vom 32-Bit-Skript aus aufrufen? Ich gehe davon aus, dass Sie unter 64-Bit-Windows sind. ZB C: \ Windows \ SysWOW64 \ cscript.exe script.vbs
HelpingHand vor 6 Jahren
0
Ja, ich bin auf einem 64-Bit-System. Nicht sicher, wie das geht.
Christopher Collins vor 6 Jahren
0
Wenn Sie eine Admin-Eingabeaufforderung öffnen, können Sie Folgendes ausführen: C: \ Windows \ SysWOW64 \ cscript.exe C: \ pathto \ RenamePC.vbs`
HelpingHand vor 6 Jahren
0
Ja, es lief ohne Fehler, aber es wurde nichts in der CSV protokolliert.
Christopher Collins vor 6 Jahren
0
Ok, ich lief beim Debuggen und bekomme nichts. Das Skript scheint abzuschließen, schreibt jedoch nichts in die .csv. Aktualisieren Sie den Code im Original
Christopher Collins vor 6 Jahren
0
Ich vermisse vielleicht etwas, aber wird "Name" irgendwo deklariert oder zugewiesen? `err = objComputer.Rename (Name)`
Yorik vor 6 Jahren
0
Ja, ich habe es in `StrNewName` geändert. Ich habe vergessen, es dort zu ändern. Der Code oben wurde behoben, aber er wird nicht umbenannt oder in der CSV-Datei markiert.
Christopher Collins vor 6 Jahren
0
Update hat den Computer tatsächlich umbenannt, schreibt aber nicht in der CSV. Obwohl es mir fehlgeschlagen ist, ist der Fehler beim Beitreten zur Domäne aufgetreten.
Christopher Collins vor 6 Jahren
0
0 Antworten auf die Frage
Verwandte Probleme
-
3
Wie kann ich eine Verzeichnisstruktur "invertieren"?
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
7
Starten Sie den Synergy-Client beim Booten in Mac OS X
-
4
Wie synchronisieren Sie GreaseMonkey-Skripts zwischen Computern?
-
1
Kann ich ein Skript schreiben, das Benutzer automatisch wechselt?
-
6
Guter PowerShell-Leitfaden, der durch fortgeschrittene Verwendung Einstieg leistet
-
3
FTP "PUT" schlägt von der virtuellen Maschine aus, aber nicht vom Host-PC aus: 504 Der Befehl ist fü...
-
1
ksh entspricht perl $! Fehlerursache
-
2
Subskriptionsfehler außerhalb des Bereichs in VBScript-Skript
-
5
crontab, um osx aus dem schlaf zu erwecken