5 полезных сценариев VB для Windows для автоматизации использования компьютера

5 полезных сценариев VB для Windows для автоматизации использования компьютера

Независимо от того, являетесь ли вы ИТ-аналитиком или обычным пользователем компьютера, существует множество задач, которые вам, возможно, придется часто выполнять на своем ПК. Сценарии 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.

Читать далее
Похожие темы
  • Программирование
  • Компьютерная автоматизация
  • Сценарии
Об авторе Райан Дьюб(Опубликовано 942 статей)

Райан имеет степень бакалавра в области электротехники. Он проработал 13 лет в области автоматизации, 5 лет в ИТ, а теперь работает инженером по приложениям. Бывший управляющий редактор MakeUseOf, он выступал на национальных конференциях по визуализации данных и выступал на национальном телевидении и радио.

Ещё от Ryan Dube

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться