Поставщик ADODB не может быть найден
240
Christopher Collins
Получаю Provider Can't be found
ошибку. Этот сценарий предназначен для переименования рабочей станции в домене при регистрации как старого, так и нового имени в файле csv.
ОБНОВЛЕНИЕ: Сценарий, кажется, завершен, но ничего не записывает в .csv. Это также не переименовывает компьютер.
' 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
Из интереса, работает ли он, если вы вызываете скрипт из 32-битного cscript? Я полагаю, вы на 64-битной Windows? Например, C: \ Windows \ SysWOW64 \ cscript.exe script.vbs
HelpingHand 5 лет назад
0
Да, я на 64-битной системе. Не уверен, как это сделать.
Christopher Collins 5 лет назад
0
Если вы откроете командную строку администратора, вы можете запустить: `C: \ Windows \ SysWOW64 \ cscript.exe C: \ pathto \ RenamePC.vbs`
HelpingHand 5 лет назад
0
Да, он работал без ошибок, но ничего не регистрировался в CSV.
Christopher Collins 5 лет назад
0
Хорошо, я запустил отладку и ничего не получил. Сценарий, кажется, завершен, но ничего не записывает в .csv. Обновить код в оригинале
Christopher Collins 5 лет назад
0
Возможно, я что-то упускаю, но объявлено ли или присвоено ли «Имя»? `err = objComputer.Rename (Name)`
Yorik 5 лет назад
0
Да, я изменил его на `StrNewName`. Забыли там поменять. Исправлен код выше, но он не переименовывает и не маркирует его в .csv.
Christopher Collins 5 лет назад
0
Обновление получило переименование компьютера, но оно не записывается в CSV. Хотя это дало мне ошибку «Присоединиться к домену».
Christopher Collins 5 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
3
Как я могу "инвертировать" структуру каталогов?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
7
Запустить синергетический клиент при загрузке в Mac OS X
-
-
4
Как синхронизировать скрипты GreaseMonkey между компьютерами?
-
1
Могу ли я написать скрипт, который будет автоматически переключать пользователей?
-
6
Хорошее руководство по PowerShell, начало работы с более продвинутым использованием
-
3
Сбой FTP «PUT» на виртуальной машине, но не на хост-ПК: 504 Команда не реализована для этого парамет...
-
1
ksh эквивалент perl $! причина ошибки
-
2
Ошибка индекса вне диапазона в сценарии VBScript
-
5
crontab разбудить osx из сна