vbs скрипты для администратора

Скрипты для ленивых Windows-админов

Будучи какое-то время назад админом (ленивым), написал несколько скриптов, автоматизирующих рутину и позволяющих еще больше лениться. Админством я больше не занимаюсь, а скрипты выкладываю, может кому пригодятся.

1. Авто-установка описания компьютера локально и в AD

В компании был стандарт на наименование компьютеров, что-то вроде COMPUTERxxxx (xxxx — это цифра), соответсвенно Хелпдеску было сложно по имени человека найти компьютер для начальной диагностики и удаленного подключения, а объяснение рядовому пользователю как определить имя компьютера занимало много времени. Решение пришло в виде скрипта.

После запуска шерстит все компьютеры из указанных OU и устанавливает описание в зависимости от залогиненного пользователя.

* Скрипт должен запускаться от учетки, имеющей админские права на компьютерах и доступ на изменение описания компьютера в AD.
** Не корректно работает на Windows 2000, если залогиненый пользователь не локальный администратор, с Windows Vista не тестировался.

Перед запуском нужно настроить скрипт.

2. Авто-очистка «папки обмена»

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

Логика скрипта: файлы, со дня создания/модификации которых прошло 10 дней, помещаются в спец папку внутри папки обмена (_deletion_queue_), после чего из папки «на удаление», через 7 дней, файлы удаляются совсем.

Все настраивается переменными в скрипте.

3. Редирект «Избранного»

Microsoft предусмотрела редирект практически всего, кроме «Избранного». Почему — загадка. В компании было жесткое правило, чтобы все данные хранились на серверах. Потеря «Избранного», конечно, не смертельна, но неприятна. Поэтому я написал скрипт, который делает редирект «Избранного» в папку на сервере.

PS. Скрипты писались «для себя», поэтому, перед использованием настройте и проверьте на чем-нибудь не важном 🙂

Источник

Полезные скрипты для сисадмина. Vbs

add_printer.vbs

‘Автоматическое добавление сетевых принтеров пользователям’
Set WshNetwork = WScript.CreateObject(”WScript.Network”)
WshNetwork.AddWindowsPrinterConnection “\\Servname\HP LJ M5025″
WshNetwork.AddWindowsPrinterConnection “\\Username\HP”
WScript.Echo “Все принтеры добавлены. Спасибо, что облегчили работу админу.”

wins_service.bat

‘скрипт для обслуживание базы данных wins. Выполнять раз в квартал или полгода’
net stop wins
jetpack %systemroot%\system32\wins\wins.mdb %systemroot%\system32\wins\tmp.mdb
net start wins

service.vbs

‘Скрипт для определения состояния службы
Set objShellApp = CreateObject(”Shell.Application”)
ServiceName = “NtLmSsp” ‘ имя сервиса
If objShellApp.IsServiceRunning(ServiceName) Then
MsgBox “Сервис ” & ServiceName & ” запущен!”, vbInformation
Else
MsgBox “Сервис ” & ServiceName & ” НЕ запущен!”, vbInformation
End If

login.vbs

upgrade.vbs

‘скрипт для копирования файлов из сети на ПК (на примере обновления баз McAfee)
SourceFolder = “\\server\Engine\” ‘ каталог, откуда копируем
DestFolder = “C:\Program Files\Common Files\Network Associates\Engine\” ‘ каталог куда копируем
LogFolder = “\\server\Log\” ‘ путь к лог файлу

‘======================================= =============================
On Error Resume Next
Set FSO = CreateObject(”Scripting.FileSystemObject” )
Set WshNetwork = CreateObject(”WScript.Network”)
Set LogFile = FSO.OpenTextFile(LogFolder & “\mcafee_upg.log”, 8, True)

ind all users in domain.vbs

‘ Этот VBScript код ищет все аккаунты пользователей в домене и выводит рез-тат в файл
‘ —————————————————————
‘ Сей код можно найти в книге:
‘ “Active Directory Cookbook” by Robbie Allen
‘ ISBN: 0-596-00466-4
‘ —————————————————————

‘ —— SCRIPT CONFIGURATION ——
strDomainDN = “ваш_домен” ‘ e.g. dc=rallencorp,dc=com
LogFolder = “путь_для_сохранения”
‘ —— END CONFIGURATION ———

Set FSO = CreateObject(”Scripting.FileSystemObject” )
Set LogFile = FSO.OpenTextFile(LogFolder & “\list.txt”, 8, True)

strBase = “ ;”
‘ Для поиска в Глобальном каталоге, раскомментируйте эту строку:
‘ strBase = “ ;”

set objConn = CreateObject(”ADODB.Connection”)
objConn.Provider = “ADsDSOObject”
objConn.Open “Active Directory Provider”
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
objRS.MoveFirst
while Not objRS.EOF
LogFile.WriteLine objRS.Fields(0).Value
objRS.MoveNext

LogFile.Close
WScript.Echo “Скрипт выполнен. Файл находится в ” & LogFolder

find all computers in domain.vbs

‘ Этот VBScript код находит все аккаунты компьютеров в Active Directory

Const ADS_SCOPE_SUBTREE = 2
strDomain = “ваш_домен”

Set objConnection = CreateObject(”ADODB.Connection”)
Set objCommand = CreateObject(”ADODB.Command”)
objConnection.Provider = “ADsDSOObject”
objConnection.Open “Active Directory Provider”

Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
“Select Name, Location from ‘LDAP://” & strDomain & “‘ ” _
& “Where objectCategory=’computer’”
objCommand.Properties(”Page Size”) = 1000
objCommand.Properties(”Searchscope”) = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
Wscript.Echo “Computer Name: ” & objRecordSet.Fields(”Name”).Value
Wscript.Echo “Location: ” & objRecordSet.Fields(”Location”).Value
objRecordSet.MoveNext
Loop

find all disabled users in domain.vbs

‘ Этот VBScript код находит все отключенные (disabled) аккаунты пользователей в Active Directory

‘ —————————————————————
‘ Сей код можно найти в книге:
‘ “Active Directory Cookbook” by Robbie Allen
‘ ISBN: 0-596-00466-4
‘ —————————————————————

Источник

Скрипты для сисадмина

Без скриптов спокойная работа настоящего сисадмина невозможна.

Скрипт 1

Скрипт состоит из отдельных блоков, которые можно использовать как отдельно, так и целиком. Вообще, этот скрипт предназначен для обеспечения работы программы «Учёт и контроль компьютеров в сети» для сбора информации о компьютере. Вот её описание. Рекомендую. Бесплатно, информативно, наглядно. Но в данной статье не это главное. Главное, что это делается не руками, а по расписанию или по нажатию иконки.

Где можно применить этот скрипт? Если вам необходимо что-то выполнить на удалённом компьютере, вне пределов локальной сети, и получить результат по электронной почте, с приложенным файлом или без него, то этот скрипт для вас. Или может быть вам нужно при наступлении какого-либо события на удалённом компьютере из любой точки мира получить на свой адрес письмо-оповещение, или SMS на телефон, если ваш оператор поддерживает передачу SMS по электронной почте. Всё в ваших руках.

Что делает этот скрипт?

Если хоть что-то из перечисленного вас заинтересовало, то тогда этот скрипт для вас. Используйте эти «кирпичики» для написания своих скриптов. Разумеется, и этот скрипт можно упростить или дополнить, всё в ваших руках.

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

Остальные пояснения даны в теле скрипта.

Скрипт 2

На чём основана работа скрипта?

Для скорости работы скрипта компьютер пингуется только одним пингом. Опытным путём выявлено, что для IP4 единственным общим для разных версий Windows признаком ответа работающего компьютера является строка «TTL» в ответе. У выключенных компьютеров её нет. Главная строка скрипта работает по принципу конвейера: результат пинга обрабатывает команда FIND, ищет «TTL» в ответе с игнорированием регистра, а чтобы не «светиться», все направляется в NUL. При обнаружении «TTL» переменная ERRORLEVEL будет равна нулю, что нам и надо. «Гасим» его, нарушителя! Вопрос, чем гасить? В Windows есть штатная команда SHUTDOWN. Но она, как выяснилось, не всегда срабатывает, если открыты программы на компьютере нарушителя. Я использовал утилиту Марка Руссиновича PsShutdown.exe. Это работает. Взять её можно официально и бесплатно отсюда. Работу скрипта по выключению при обнаружении работающего компьютера пишем в лог. Записываются текущие дата, время и фамилия нарушителя.

Моя рекомендация

Александр РЫКУНИН

Источник

Сисадмину: Пишем скрипты на все случаи жизни

Каждый, кто работал сисадмином UNIX-систем, рано или поздно начинает автоматизировать свою работу с помощью скриптов.
Написаны они могут быть на чём угодно — от bash’а до tcl. Важен подход.
В этой статье я попробую вкратце описать приемы скриптовой автоматизации.

Когда нужно писать скрипты?

1. Когда это приведет к экономии времени.
Если нужно однотипно настроить 1000 свитчей, разослать спам приглашения на конференцию или собрать базу MAC-адресов — скрипты наши лучшие друзья.

2. Когда некие действия выполняются регулярно.
Архивирования резервных копий, очистка mysql-базы от мусора или сбор статистики — те самые случаи.

3. Когда нужно создать что-то сложное, но лениво делать это «по серьёзному».
Примеры — микробиллинги, счетчики трафика и системы блокировки должников.
Это нужно писать на C/C++. Но начальство сказало: «Сделать сегодня!». И снова скрипты — и мысль «когда-нибудь перепишу». 🙂

Когда не нужно писать скрипт?

Всегда, когда это не нужно согласно трём первым пунктам.
Хотя если хотите — пишите. Время ваше. 🙂

Несколько примеров из личной жизни

1. Скрипт починки всех таблиц mysql. Ставил на хостинг по крону — сразу пропали звонки абонентов на тему неработающих сайтов на mysql. [bash]
vbs скрипты для администратора. 52c467e71ef4a4368e82fa84830c40fc. vbs скрипты для администратора фото. vbs скрипты для администратора-52c467e71ef4a4368e82fa84830c40fc. картинка vbs скрипты для администратора. картинка 52c467e71ef4a4368e82fa84830c40fc. Будучи какое-то время назад админом (ленивым), написал несколько скриптов, автоматизирующих рутину и позволяющих еще больше лениться. Админством я больше не занимаюсь, а скрипты выкладываю, может кому пригодятся.

2. Массовое выполнение команд на свитчах AT-8000S. [perl]

iplist.txt — список свитчей в формате ip:login:password
command.txt — список команд.
vbs скрипты для администратора. 5e8287bedb122dfce83e85067b4944d2. vbs скрипты для администратора фото. vbs скрипты для администратора-5e8287bedb122dfce83e85067b4944d2. картинка vbs скрипты для администратора. картинка 5e8287bedb122dfce83e85067b4944d2. Будучи какое-то время назад админом (ленивым), написал несколько скриптов, автоматизирующих рутину и позволяющих еще больше лениться. Админством я больше не занимаюсь, а скрипты выкладываю, может кому пригодятся.

3. Проверка работы демона — полезно при наличии падучих программ.
Можно убрать while и запихнуть в кронтаб.
vbs скрипты для администратора. cc82e443cfdfc0bcdd0a41ae98210b30. vbs скрипты для администратора фото. vbs скрипты для администратора-cc82e443cfdfc0bcdd0a41ae98210b30. картинка vbs скрипты для администратора. картинка cc82e443cfdfc0bcdd0a41ae98210b30. Будучи какое-то время назад админом (ленивым), написал несколько скриптов, автоматизирующих рутину и позволяющих еще больше лениться. Админством я больше не занимаюсь, а скрипты выкладываю, может кому пригодятся.

Заключение

Скрипты можно писать. Скрипты нужно писать. Удачи. 🙂

Источник

Сценарии для администрирования (Часть 2)

В основном VBS-сценарии применяются для обработки данных, управления системой, работы с учетными записями пользователей и компьютеров, взаимодействия с офисными приложениями, работы с базами данными и прочих сложных задач.

В зависимости от языка сценария, содержания и шифрования встречаются такие типы скриптов:

В этой статье я буду рассматривать сценарии типа vbs.

По умолчанию все скрипты выполняются через WScript, то есть никаких настроек не требуется, но чтобы выполнить скрипт в окне консоли, необходимо запустить его через CScript, либо установить CScript как интерпретатор, используемый по умолчанию. Для этого в командной строке нужно выполнить следующее:

После чего все сценарии будут выполняться в режиме консоли. Возврат в оконный режим осуществляется следующей командой:

В Visual Basic работают следующие правила:

Рекомендуемая структура сценария:

По умолчанию переменные в сценариях объявляются автоматически при первом использовании в теле скрипта, если это не запрещено директивойOption Explicit. Если же в начале сценария объявить директиву Option Explicit, то все переменные нужно определять заранее с помощью следующих конструкций:

Константы объявляются в начале сценария с помощью конструкции:

Тип переменной присваивается автоматически после внесения в нее первого значения. В Visual Basic существуют следующие типы данных:

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

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

В VBS-сценариях возможно использование массивов переменных, которые позволяют хранить списки, таблицы и даже более сложные конструкции. Одномерные массивы (списки) могут быть динамическими, то есть они позволяют изменять свою размерность в ходе работы сценария. Все массивы объявляются командой Dim:

Пример использования массивов

Прежде, чем пользоваться динамическим массивом, ему нужно указать текущую размерность с помощью команды ReDim, после чего массив можно переформировать в любом месте сценария, при этом либо очистить весь массив, либо сохранить старые значения ячеек командой Preserve:

Чтобы узнать размерность массива, обычно пользуются функцией UBound, которая будет рассмотрена ниже вместе с остальными функциями работы с данными.

Ни один полноценный сценарий не обходится без ветвлений, ветвления помогают выбрать верный путь при выполнении или невыполнении какого-то заложенного условия. Иными словами, ветвления реализуют логику сценария. В VBS-сценариях реализованы несколько механизмов ветвлений. Рассмотрим их по порядку.

Конструкция для одного действия, выполняемого по условию:

Конструкция для нескольких действий, выполняемых по условию:

Конструкция «развилка на несколько путей» (вариант сIf):

Конструкция «развилка на несколько путей» (вариант сSelect):

Для организации повторяющихся действий или перебора элементов массива обычно используются циклы. В VBS-сценариях организованы несколько видов циклов: обычный цикл, цикл с неизвестным количеством итераций, цикл по условию.

Если в процессе работы цикла потребуется прекратить перебор значений, то это можно сделать с помощью команды Exit For.

Цикл с неизвестным количеством итераций обычно применяется для перебора всех значений в коллекции объекта, когда не известна его размерность. Эта структура переберет все значения ( ) массива, переданного как парамер цикла ().

Циклы с условиями применяются для обработки данных, при выполнении какого-то условия. Такие циклы бывают двух видов: с проверкой в начале цикла и с проверкой в конце.

Цикл, пока выполняется условие, с проверкой в начале

Цикл, пока не выполнится условие, с проверкой в начале

Как уже было сказано выше, условия можно ставить в конец цикла. В этом случае тело цикла будет выполнено как минимум один раз. Так же как и в обычных циклах, цикл с условием можно прервать командой Exit Do:

Функции обработки дат:

Функции обработки строк:

И, естественно, помимо упомянутых функций, сценарии поддерживают все простейшие математические и логические операции:

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

Кстати, процедуры и функции должны располагаются в конце сценария.

Во время работы подпрограммы значения переменных основной части скрипта не изменяются, даже если в подпрограмме есть одноименные переменные. Чтобы подпрограмма имела возможность менять значения переменных основного сценария, необходимо в аргументах подпрограммы задать свойство переменных как ByRef. По умолчанию все переменные определяются со свойством ByVal.

По умолчанию все ошибки обрабатываются сценарием в автоматическом режиме, и, при возникновении ошибки, работа сценария останавливается. Для отключения автоматической обработки ошибок нужно использовать специальную директиву On Error Resume Next, которая отключает автоматическую обработку ошибок и продолжает работы сценария даже при их наличии. Для ручной обработки ошибок необходимо обратится к встроенному объектуErr, который хранит в себе статус ошибок. Объект Err имеет следующие свойства и методы:

Пример ручной обработки ошибки:

Итак, чтобы работать с объектом, его нужно сначала создать, используя классы из нужной библиотеки:

Удалить объект можно, присвоив ему значение Nothing:

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

Пример. Создание объекта файловой системы, обращение к методу создания папки, удаление объекта.

Обратите внимание, что понятие «объект» относится к логике сценария, а не к логике файловой системы. То есть, когда мы говорим «удаление объекта», мы имеем ввиду логический объект сценария, который никак не влияет на удаление каких-то частей файловой системы.

Чтобы узнать, какие существуют библиотеки в Вашей операционной системе, включенные в библиотеки классы, их методы и свойства, можно воспользоваться проводником объектов, например из Microsoft Word:

В сценариях есть методы, не входящие ни в какой класс, они доступны непосредственно в теле сценария:

Пример вывода диалогового окна с запросом текста, а после этого вывод на экран оконного сообщения с введенным текстом.

Применение этих методов и свойств более подробно мы разберем в примерах других классов.

Для работы с операционной системой используется специальный класс Shell, который позволяет выполнять такие операции как запуск программ, изменение реестра, создание ярлыков, доступ к системным папкам и системным переменным, доступ к системному журналу. Итак, методы и свойства класса Shell:

Пример. Использование методов и свойств класса Shell.

Как мы уже убедились, VBS-сценарии могут работать с оболочкой Windows, но это не единственная их возможность. С помощью класса Network можно получить доступ к сетевым объектам и управлять ими. Давайте подребнее разберем класс Network:

Пример. Использование методов и свойств класса Network.

Очень часто в сценариях встречаются такие случаи, когда необходимо что-то создать, удалить, переместить или изменить на диске компьютера. Эту задачу позволяет решить класс FileSystemObject, предназначенный для работы с файловой системой. Ниже перечисленны объекты, которые может создать этот класс:

Методы и свойства класса FileSystemObject (главного объекта):

Объекты Drives, Folders и Files класса FileSystemObject хранят в себе информацию о дисках, папках и файлах и, в основном, используюся для сбора информации о файловой системе. Они имеют только два свойства:

Чтобы было более понятно, что же такое коллекция объектов, рассмотрим пример вывода на экран списка файлов корня диска C:

Объект Drive предоставляет доступ к свойствам локального или сетевого диска:

Объект Folder предоставляет доступ ко всем свойствам папки, а также позволяет производить над ней действия:

Мы познакомились со всеми методами и свойствами класса FileSystemObject, рассмотрим пример использования этого класса:

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

Итак, мы познакомились с основами сценариев Visual Basic Script. Давайте подведем итог, и определим достоинства и недостатки таких сценариев:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *