ADODB-Provider Kann nicht gefunden werden

329
Christopher Collins

Einen Provider Can't be foundFehler 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 
0
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 5 Jahren 0
Ja, ich bin auf einem 64-Bit-System. Nicht sicher, wie das geht. Christopher Collins vor 5 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 5 Jahren 0
Ja, es lief ohne Fehler, aber es wurde nichts in der CSV protokolliert. Christopher Collins vor 5 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 5 Jahren 0
Ich vermisse vielleicht etwas, aber wird "Name" irgendwo deklariert oder zugewiesen? `err = objComputer.Rename (Name)` Yorik vor 5 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 5 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 5 Jahren 0

0 Antworten auf die Frage