Независимо от того, являетесь ли вы ИТ-аналитиком или обычным пользователем компьютера, существует множество задач, которые вам, возможно, придется часто выполнять на своем ПК. Сценарии VB - это уменьшенные программы Visual Basic, которые служат в качестве сценариев Windows, которые могут делать что угодно - от получения важной информации об оборудовании вашего компьютера до остановки и запуска служб или сброса сетевой карты.
Можно научиться делать все эти отдельные вещи обычным способом или делать их с помощью командных файлов. Но Скрипты VB лучше, чем пакетные скрипты потому что они более гибкие. Если вы храните следующие сценарии в общем месте, к которому можно быстро добраться, когда вам это нужно, вы можете выполнить эти задачи за очень короткое время. Вы просто дважды щелкаете сценарий, отвечаете на запрос, и задача выполняется.
Взгляните на следующие сценарии VB Windows, и если вы увидите какие-либо из них, которые хотите использовать, просто скопируйте и вставьте сценарий в Блокнот или другой инструмент для заметок по кодированию и сохраните его как файл WSF.
Подготовьте свои сценарии Windows
Каждый из описанных ниже скриптов будет запускаться с помощью двойного щелчка, если вы назвали файл с расширением .WSF, а также включили код в начале:
И закройте код с помощью:
WScript.Quit
Это гарантирует, что Windows распознает язык, на котором написан ваш скрипт, и правильно его обработает.
1. Используйте сценарии Windows для получения информации о компьютере
Windows предлагает нечто, называемое WMI или инструментарием управления Windows, который предоставляет вашему сценарию интерфейс для доступа к компонентам операционной системы. Фактически вы можете запускать запросы к WMI, чтобы получить текущую информацию о вашей системе. Microsoft предлагает полный список всех категории запросов вы можете выступить против системы.
Мы рассмотрели, как использовать VBA для извлечения информации о компьютере в Excel, но вы можете сделать то же самое, используя простой скрипт VB вне Excel.
В этом примере мы собираемся запросить у системы информацию о процессоре (семейство, производитель и количество ядер), информацию о батарее (описание и состояние) и информацию о логическом диске (имя, оставшееся свободное пространство и общий размер). Затем мы выведем всю эту информацию в файл CSV для удобного просмотра.
Первый шаг - настроить FileSystemObject, который вы будете использовать для вывода в файл CSV, и создать файл:
Set oFSO = CreateObject('Scripting.FileSystemObject')
sFile1 = 'MyComputerInfo.csv'
Set oFile1 = oFSO.CreateTextFile(sFile1, 1)
Следующим шагом будет настройка запроса WMI и его выполнение:
как сохранить экран печати как pdf
strQuery = 'SELECT Family,Manufacturer,NumberOfCores FROM Win32_Processor'
Set colResults = GetObject('winmgmts://./root/cimv2').ExecQuery( strQuery )
Наконец, отсортируйте результаты и выведите информацию в файл CSV. Если вы хотите, чтобы ваш выходной файл выглядел лучше, добавьте к этому пара строк в начале:
oFile1.WriteLine 'Processor Information'
oFile1.WriteLine '------'
For Each objResult In colResults
strResults = 'Family:,'+CStr(objResult.Family)
oFile1.WriteLine strResults
strResults = 'Manufacturer:,'+CStr(objResult.Manufacturer)
oFile1.WriteLine strResults
strResults = 'Number of Cores:,'+CStr(objResult.NumberOfCores)
oFile1.WriteLine strResults
Next
Если вы запустите свой код сейчас, ваш результат будет выглядеть следующим образом:
Для следующих двух разделов вашего кода вы просто собираетесь повторить и изменить запрос, чтобы искать дополнительную информацию. Вот запрос информации о батарее:
oFile1.WriteLine ''
strQuery = 'SELECT Description,Status FROM Win32_Battery'
Set colResults = GetObject('winmgmts://./root/cimv2').ExecQuery( strQuery )
oFile1.WriteLine 'Battery Information'
oFile1.WriteLine '------'
For Each objResult In colResults
strResults = 'Status:,'+CStr(objResult.Description)
oFile1.WriteLine strResults
strResults = 'Description:,'+CStr(objResult.Status)
oFile1.WriteLine strResults
Next
А вот следующий раздел для запроса логического диска:
oFile1.WriteLine ''
strQuery = 'Select Name, FreeSpace, Size from Win32_LogicalDisk'
Set colResults = GetObject('winmgmts://./root/cimv2').ExecQuery( strQuery )
oFile1.WriteLine 'Disk Information'
oFile1.WriteLine '------'
'Identify the Logical Disk Space
For Each objResult In colResults
strResults = 'Name:,'+CStr(objResult.Name)
oFile1.WriteLine strResults
strResults = 'Free Space:,'+CStr(objResult.FreeSpace)
oFile1.WriteLine strResults
strResults = 'Disk Size:,'+CStr(objResult.Size)
oFile1.WriteLine strResults
Next
Наконец, не забудьте закрыть код, закрыв файл и установив для объектов значение «Nothing»:
oFile1.Close
Set oFile1 = Nothing
set colResults = Nothing
strResults = ''
Поместите весь этот код в свой новый файл .WSF, запустите его, и вот как будет выглядеть ваш результат:
Просто замените приведенные выше запросы на любые другие компьютерные устройства или программное обеспечение, о которых вы хотите получить информацию, и вы можете получить полный системный отчет в любое время одним щелчком мыши.
2. Остановить и запустить службы
Бывают случаи, когда у некоторых служб возникают проблемы, и для их нормальной работы требуется всего лишь быстрый перезапуск. Это особенно правда в IT когда вы вынуждены запускать серверное программное обеспечение, которое иногда немного глючит.
Если вы хотите сократить процесс перезапуска службы на минуту или около того, просто сохраните следующий скрипт в удобном месте. Вам будет предложено ввести имя службы, которую вы хотите перезапустить, и он сделает именно это.
Поскольку для остановки и запуска служб требуются права администратора, вам необходимо поместить следующий код в начало вашего скрипта, чтобы дать вашему скрипту повышенные привилегии :
If Not WScript.Arguments.Named.Exists('elevate') Then
CreateObject('Shell.Application').ShellExecute WScript.FullName _
, '''' & WScript.ScriptFullName & ''' /elevate', '', 'runas', 1
WScript.Quit
End If
Как только это будет сделано, добавьте остальную часть кода для запуска поля ввода для пользовательского ввода, запустите окно команд и отправьте ему команды net stop и net start:
Set cmdShell = CreateObject('WScript.Shell')
strServiceName=Inputbox('Inter Service to Stop','Input Required')
cmdShell.Run 'cmd.exe'
WScript.Sleep 1000
cmdShell.SendKeys 'net stop '+strServiceName
cmdShell.SendKeys '{Enter}'
WScript.Sleep 1000
cmdShell.SendKeys 'net start '+strServiceName
cmdShell.SendKeys '{Enter}'
WScript.Sleep 1000
cmdShell.SendKeys 'Exit'
cmdShell.SendKeys '{Enter}'
Вот и все. Не нужно искать сервисный инструмент. Просто запустите этот скрипт и остановите и запустите любую службу за секунды.
3. Измените настройки реестра, пароль администратора по умолчанию.
С помощью следующего сценария мы убьем двух зайцев одним выстрелом. Этот сценарий покажет вам, как редактировать реестр с помощью сценария VB. Он также предоставит вам сценарий, который позволит вам установить имя пользователя и пароль Windows по умолчанию, отредактировав эти параметры реестра.
Вот как это работает. Во-первых, поскольку для редактирования реестра требуются права администратора, вам необходимо настроить повышенные привилегии для вашего скрипта:
If Not WScript.Arguments.Named.Exists('elevate') Then
CreateObject('Shell.Application').ShellExecute WScript.FullName _
, '''' & WScript.ScriptFullName & ''' /elevate', '', 'runas', 1
WScript.Quit
End If
Сначала запустите два поля ввода, чтобы спросить пользователя, какое имя пользователя и пароль использовать:
strUserName=Inputbox('Enter the default User Name','Input Required')
strPassword=Inputbox('Enter the default Password','Input Required')
Затем настройте объект оболочки и запишите эти значения в соответствующие разделы реестра:
Set wshShell = CreateObject( 'WScript.Shell' )
wshShell.RegWrite 'HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultUserName', strUserName, 'REG_SZ'
wshShell.RegWrite 'HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultPassword', strPassword, 'REG_SZ'
Set wshShell = Nothing
Вот и все. Метод RegWrite позволяет записывать любое значение в любой раздел реестра с помощью сценария VB Windows. Все, что вам нужно знать, - это правильный путь.
Запустите сценарий и ответьте на запросы.
Введенные вами значения будут вставлены прямо в настройки реестра, которые вы установили в скрипте.
Поиграйте со сценарием и настройте его по своему вкусу. Вы можете редактировать любые ключи реестра, которые вам нравятся, так что будьте изобретательны!
4. Сбросьте настройки сетевого подключения.
Сброс сетевого подключения с помощью сценариев VB - это то, о чем мы уже говорили здесь, в MakeUseOf. Следующая версия этого фактически уменьшена и намного проще в реализации. Вместо того, чтобы запрашивать отдельные сетевые карты, он сбрасывает все ваши активные подключения, что, надеюсь, решит любые проблемы с сетью, которые могут у вас возникнуть.
Как и в случае с другими сценариями, которым требуются права администратора, вам необходимо добавить раздел в начале для повышенных привилегий. Скопируйте этот код из приведенного выше сценария.
Затем создайте объект WMI и запросите у него список включенных сетевых адаптеров в вашей системе:
strComputer = '.'
Set objWMIService = GetObject('winmgmts:\' & strComputer & 'ootCIMV2')
Set colItems = objWMIService.ExecQuery( _
'SELECT * FROM Win32_NetworkAdapter Where NetEnabled = 'True'')
Наконец, пропустите все включенные адаптеры и сбросьте их:
For Each objItem in colItems
objItem.Disable
WScript.Sleep 1000
objItem.Enable
Next
Это сбросит все ваши активные сетевые адаптеры , который часто является самым быстрым способом решения раздражающих сетевых проблем. Держите этот сценарий под рукой и пробуйте его в первую очередь каждый раз, когда у вас медленная сеть или другие странные сетевые проблемы.
5. Проверка связи с устройствами или веб-сайтами.
Я оставил свой любимый скрипт для Windows на VB напоследок. Это то, что я фактически настроил как запланированное задание на своем домашнем компьютере и запускал несколько раз в день, просто чтобы проверить, активен ли мой веб-сайт. У меня есть сценарий по электронной почте, если сайт не работает. Вы можете использовать этот же сценарий для мониторинга важных серверов или компьютеров в вашей сети и отправлять себе электронную почту каждый раз, когда ваш сценарий не может проверить связь с устройством.
Сначала настройте сценарий для цели, которую вы хотите проверить, создайте объект оболочки, а затем запустите команду ping.
strTarget = 'topsecretwriters.com'
Set WshShell = WScript.CreateObject('WScript.Shell')
Ping = WshShell.Run('ping -n 1 ' & strTarget, 0, True)
Используйте оператор Select Case, чтобы просмотреть результаты Ping и ответить соответствующим образом. Если результат возвращается как ноль, значит, вы знаете, что сайт (или сервер) в сети, и вам не нужно ничего делать. Если он возвращает «1», то эхо-запрос не удался, и вам нужно что-то сделать. В моем случае я отправляю электронное письмо, используя объект Windows CDO:
Select Case Ping
Case 0
Case 1
Set objMessage = CreateObject('CDO.Message')
Set objConfig = CreateObject('CDO.Configuration')
objConfig.Load -1
Set Flds = objConfig.Fields
With Flds
.Item ('http://schemas.microsoft.com/cdo/configuration/smtpusessl') = True
.Item ('http://schemas.microsoft.com/cdo/configuration/smtpauthenticate')=1
.Item ('http://schemas.microsoft.com/cdo/configuration/sendusername')='xxxxxx@gmail.com'
.Item ('http://schemas.microsoft.com/cdo/configuration/sendpassword')='xxxxxxxxxxxxxxxxx'
.Item ('http://schemas.microsoft.com/cdo/configuration/smtpserver')='smtp.gmail.com'
.Item ('http://schemas.microsoft.com/cdo/configuration/sendusing')=2
.Item ('http://schemas.microsoft.com/cdo/configuration/smtpserverport')=465
.Update
End With
With objMessage
Set .Configuration = objConfig
.Subject = 'Your site is offline'
.From = 'me@mycomputer.com'
.To = 'xxxxxx@gmail.com'
.TextBody = 'Hey, your website is offline.'
.Send
End With
End Select
Как только скрипт запустится и не сможет проверить связь с устройством или веб-сайтом, вы получите мгновенное сообщение.
Это быстро, легко и эффективно!
Использование сценариев VB Windows для управления компьютером
Это всего лишь несколько примеров некоторых интересных вещей, которые вы можете делать с помощью сценариев VB для оптимизации использования вашего компьютера. Есть много других вещей, которые вы можете делать, например, автоматическое резервное копирование с помощью VB и Synctoy, автоматизация команд telnet или даже открытие и управление окнами приложений.
Что вы автоматизировали на своем компьютере с помощью сценария Windows? Вы пишете свой, используя VB, или используете какой-либо другой инструмент как PowerShell ?
Делиться Делиться Твитнуть Эл. адрес Вот почему ФБР выпустило предупреждение о вирусах-вымогателях HiveФБР вынесло предупреждение об особо опасном штамме программ-вымогателей. Вот почему вам нужно особенно опасаться программ-вымогателей Hive.
Читать далее Похожие темы- Программирование
- Компьютерная автоматизация
- Сценарии
Райан имеет степень бакалавра в области электротехники. Он проработал 13 лет в области автоматизации, 5 лет в ИТ, а теперь работает инженером по приложениям. Бывший управляющий редактор MakeUseOf, он выступал на национальных конференциях по визуализации данных и выступал на национальном телевидении и радио.
Ещё от Ryan DubeПодписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Нажмите здесь, чтобы подписаться