Windows

Скрипты vbs Windows

stop_whatching_me

Независимо от того, являетесь ли вы ИТ-аналитиком или просто постоянным пользователем компьютера, на вашем компьютере часто требуется выполнение множества задач. Сценарии Visual Basic могут помочь автоматизировать эти действия.

Скрипты VB лучше, чем пакетные скрипты, потому что они более гибкие. Если вы храните сценарии в месте куда можно быстро добраться, то вы можете выполнить множество задач очень быстро. Вы просто дважды щёлкните сценарий, ответите на приглашение, и задача будет выполнена!

Взгляните на следующие скрипты VB Windows, и если вы увидите тот, который хотите использовать, то просто скопируйте его и вставьте в блокнот или другой редактор, а затем сохраните его как файл с расширением WSF.

Создание своих скриптов Windows

Каждый из скриптов, описанных ниже, будет выполняться двойным щелчком мышки на него, если вы установили для него расширение .WSF и ввели в начале код: <job>
<script language="VBScript">

В конце введите код: WScript.Quit
</script>
</job>

Это гарантирует, что Windows распознает язык, на котором написан ваш сценарий и обработает его правильно.

Сценарии Windows для получения информации о компьютере

Рассмотрим, как использовать VB для вывода информации о компьютере в файл Excel, но вы можете сделать то же самое, используя лишь скрипт VB без вывода в Excel.

Будем запрашивать информацию о процессоре (семейство, производитель и количество ядер), информацию о батарее (описание и состояние) и информацию о логическом диске (имя, свободное пространство и общий размер). Затем выведем всю эту информацию в файл CSV для удобства просмотра.

Первый шаг - настроить FileSystemObject, который будет использоваться для вывода в CSV-файл, создаём файл со следующим содержанием: Set oFSO = CreateObject("Scripting.FileSystemObject")
sFile1 = "MyComputerInfo.csv"
Set oFile1 = oFSO.CreateTextFile(sFile1, 1)

Следующим шагом будет настройка запроса WMI и его выполнение: 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

Наконец, закрываем код: oFile1.Close

Set oFile1 = Nothing
set colResults = Nothing
strResults = ""

Поместите весь этот код в ваш новый файл с расширением .WSF и запустите его двойным кликом мышки в любое удобное для вас время чтобы получить полный системный отчет.

Остановка и запуск сервисов

Бывают случаи, когда некоторые службы имеют проблемы и требуют быстрого перезапуска правильной работы. Это особенно актуально в сфере 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}"

Вот и всё. Просто запустите этот скрипт и остановите либо запустите любую службу за считанные секунды.

Измените настройки реестра и смена пароля администратора по умолчанию

С помощью следующего сценария мы собираемся убить двух зайцев одним выстрелом. Скрипт покажет вам, как редактировать реестр с помощью сценария VB. Он также даст вам сценарий, который позволит установить имя пользователя и пароль по умолчанию.

Во-первых, поскольку для редактирования реестра требуются права администратора, необходимо настроить повышенные привилегии для скрипта: 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 "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName", strUserName, "REG_SZ"
wshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword", strPassword, "REG_SZ"
Set wshShell = Nothing

И это все, что нужно. Метод RegWrite позволяет записывать любое значение в любой раздел реестра с помощью сценария VB Windows. Все, что вам нужно знать - это подходящий путь.

Теперь просто запустите сценарий и ответьте на подсказки. Вводимые значения будут вставлены прямо в настройки реестра, которые вы установили в скрипте.

Сброс сетевого соединения

Вместо того, чтобы запрашивать отдельные сетевые карты, рассматриваемый метод сбрасывает все активные сетевые соединения. Как и в случае с другими сценариями, требующими прав администратора, вам нужно добавить в начале раздел для повышенных привилегий. Скопируйте этот код из предыдущих сценариев.

Затем создайте объект WMI и запросите его для списка включенных сетевых адаптеров в вашей системе: strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery(
_"SELECT * FROM Win32_NetworkAdapter Where NetEnabled = 'True'")

Наконец, запустите все адаптеры и перезагрузите их: For Each objItem in colItems
objItem.Disable
WScript.Sleep 1000
objItem.Enable
Next

Это приведет к сбросу всех активных сетевых адаптеров, что часто является самым быстрым способом устранения раздражающих сетевых проблем.

Ping или проверка веб-сайта

Вы можете использовать этот скрипт для мониторинга важных серверов или компьютеров в своей сети и отправки сообщений по электронной почте в любое время, когда ваш скрипт не сможет выполнить ping.

Сначала настройте скрипт для цели, к которой вы хотите выполнить ping, создайте объект оболочки и запустите команду ping: strTarget = "a-v-d.info"
Set WshShell = WScript.CreateObject("WScript.Shell")
Ping = WshShell.Run("ping -n 1 " & strTarget, 0, True)

Используйте оператор Select Case для выполнения по результатам Ping. Если результаты возвращаются как ноль, то вы знаете, что сайт (или сервер) находится в сети. Если он вернет «1», значит ping не удался.

В случае рассмотренном ниже будет отправлено электронное письмо с использованием объекта CDO Windows: 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")="x@gmail.com"
.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")="xxxx"
.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

Не забудьте вставить свои данные в скрипт (данные почты, цель пинга, текст сообщения). Как только скрипт запускается и не может выполнить ping, вы сразу получаете сообщение.

Это всего лишь несколько примеров как можно применять скрипты VB, чтобы оптимизировать использование вашего компьютера. Есть много других вещей, которые вы можете сделать, например, автоматическое резервное копирование с помощью VB и Synctoy, автоматизацию команд telnet или даже открытие и управление окнами приложений.

Яндекс.Метрика