Выполнение кода VBS в VBA с правами администратора
как дела?
Я хочу выполнить VBS-код в среде VBA, в этом случае я работаю в редакторе VB в MS Excel 2010. К сожалению, я не знаю, как преобразовать код VBS, чтобы VBA смог его выполнить.
Чтобы дать представление о том, над чем я работаю: хочу выполнить командную строку VBS, требующую прав администратора. Это приглашение перезапустит процесс на другом ПК в сети. Код VBS работает отлично, когда выполняется через cmd. Причина, по которой я хочу использовать VBA, заключается в том, что в сети много ПК, и я хочу использовать цикл для выполнения кода VBS для каждого ПК.
- найти замену vbscript excel specific cell
- Как найти EmptyRow в Excel с помощью VBScript
- Открыть относительный путь в VBS с помощью метода OpenText и SaveAs
- Использование ASP Classic для автоподбора всех столбцов листа Excel
- Как отображать окно сообщения только после нажатия Ctrl + S (сохранение) в определенной ячейке с помощью vba
ОК, вот код VBS:
strComputer = "Computername" Set objShell = CreateObject("Wscript.Shell") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process") intReturn = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -stop", Null, Null, intProcessID) Wscript.Sleep 10000 intReturn2 = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -start", Null, Null, intProcessID)
Вопрос в том, как мне получить этот образец кода в моей среде VBA? Я знаю, как выполнить сам VBS-файл через VBA, но этого недостаточно, потому что мне нужна переменная. Кроме того, права администратора связаны с вопросом.
ОК, вот обновление, теперь у меня есть этот код в VBA, но я не могу начать все, я также пытался реализовать runas admin:
Sub run_vbs_script() Dim strComputer As String 'Dim WshShell Dim objShell Dim objWMIService Dim dDate As Date strComputer = "IEDBR8D60CR" Set objShell = CreateObject("Wscript.Shell") RunasStruser = "runas /user:Username Domain\domain name" objShell.Run RunasStruser, 0 objShell.SendKeys "password" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process") intReturn = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -stop", Null, Null, intProcessID) dDate = DateAdd("s", 10, DateTime.Now) Do While dDate > DateTime.Now DoEvents Loop intReturn2 = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -start", Null, Null, intProcessID) Set objShell = Nothing Set objWMIService = Nothing End Sub
- VBScript для чтения из отдельных ячеек в Excel, Automation или ADODB?
- VBScript сохранит только копию моего файла
- Не удалось undersatnd передать значения через аргументы «IconFileName», «IconIndex» метода OLEObjects.Add
- Импорт содержимого XML в Excel
- Автоматическое открытие листа, изменение ячейки, повтор
- Установить область печати для файлов Excel
- Планировщик заданий - запуск макроса excel
- Помещение значения в ячейку с помощью VBS
В редакторе VBA в excel вам нужно добавить ссылку на WMI Scripting
Dim strComputer As String Dim objShell Dim objWMIService Dim dDate As Date strComputer = "Computer" Set objShell = CreateObject("Wscript.Shell") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process") intReturn = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -stop", Null, Null, intProcessID) dDate = DateAdd("s", 10, DateTime.Now) Do While dDate > DateTime.Now DoEvents Loop intReturn2 = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -start", Null, Null, intProcessID) Set objShell = Nothing Set objWMIService = Nothing
На этом сайте приведен пример кода для завершения процесса через WMI с помощью vba. Взглянуть. В примере закрывается файл notepad.exe, но я уверен, что вы могли бы заставить его сделать то же самое для symantec