Полезные скрипты

Иногда возникают задачи, которые не решить встроенными средствами Windows.

Чтобы не пользоваться сторонними программами, можно использовать скрипты.

Язык скриптов может быть различным. Мне наиболее удобным и понятным языком показался VBS.

К примеру надо отправить почтовое сообщение при перезагрузки сервера или проверить состояние дисков.

Всё это и много другое решается применением скритов.

Некоторые скрипты писал сам, некоторые нашёл в интернете.

Данные скрипты можете использовать например в групповых политиках.

Начнём с простого:

1) Отправка почты (используя CDO)

Скрипт

Set objEmail = CreateObject(”CDO.Message”)
objEmail.From = “admin@faq-cisco.ru”
objEmail.To = “cognize@yandex.ru”
objEmail.Cc = “cognize@ya.ru”
objEmail.Subject = “Server down”
objEmail.Textbody = “Server1 is no longer accessible over the network.”
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/sendusing”) = 2
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/smtpserver”) = _
“mail.faq-cisco.ru.ru”
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/smtpserverport”) = 25
objEmail.Configuration.Fields.Update
objEmail.Send
2) Установка DNS для активного сетевого подключения: (используем WMI)
Скрипт

On Error Resume Next
strComputer = “.”
Set objWMIService = GetObject(”winmgmts:\\” & strComputer & “\root\cimv2″)
Set colNetCards = objWMIService.ExecQuery _
(”Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True”)
For Each objNetCard in colNetCards
arrDNSServers = Array(”192.168.4.2″, “192.168.4.8″)
objNetCard.SetDNSServerSearchOrder(arrDNSServers)
Next
3) Поставить галку “разрешить подключение к удалённому рабочему столу” в WinXP:

Скрипт
‘ Copyleft 2004 Alejandro Leal
‘ ajleal@cantv.net
‘ Version 0.1 - August 20, 2004 - First version
‘ Version 0.2 - September 31, 2004 - OS Detection to prevent registry
‘ change if is not WinXP or Win2003

‘ This script ask for an machine name and enable Remote Desktop
‘ for Administration (Windows XP & Windows 2003).

‘ You have a royalty-free right to use, modify, reproduce, and
‘ distribute this script file in any way you find useful, provided that
‘ you agree that the copyright owner above has no warranty, obligations,
‘ or liability for such use.

Option Explicit
On Error Resume Next
Dim objReg, objWMIService, objItem, colItems
Dim strComputer, strKeyPath, strValueName, strValue
Const HKEY_LOCAL_MACHINE = &H80000002

If WScript.Arguments.Count <> 1 Then
strComputer = InputBox(”Enter machine name you want to ” &_
“enable Remote Desktop”, “Machine Name?”, “”)
If strComputer = “” Then
Call cleanUP
End If
Else
strComputer = WScript.Arguments(0)
End If

Set objReg=GetObject(”winmgmts:{impersonationLevel=impersonate}!\\” &_
strComputer & “\root\default:StdRegProv”)
If Err.Number <> 0 Then
Wscript.Echo Err.Number & ” The remote machine (” & strComputer & “)” &_
” is unavailable or access denied.”
Err.Clear
Call cleanUP
End If

strKeyPath = “SOFTWARE\Microsoft\Windows NT\CurrentVersion”
strValueName = “CurrentVersion”
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue

If strValue >= 5.1 Then
strKeyPath = “SYSTEM\CurrentControlSet\Control\Terminal Server”
strValueName = “fDenyTSConnections”
objReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If strValue = 0 Then
Wscript.Echo “Remote Desktop is already enabled on: ” & strComputer
Call cleanUP
Else
strValue = 0
objReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
Wscript.Echo “Remote Desktop was enabled on: ” & strComputer
Call cleanUP
End If
Else
Wscript.Echo “The remote machine (” & strComputer & “)” &_
“is not Windows XP or Windows 2003″
Call cleanUP
End If

‘Cleanning UP
Sub cleanUP
Set strComputer = Nothing
Set strKeyPath = Nothing
Set strValueName = Nothing
Set strValue = Nothing
Set stdOut = Nothing
Set objReg = Nothing
WScript.Quit
End Sub

4) Копирование файлов:

Скрипт

Set fso=CreateObject(”Scripting.FileSystemObject”)
fso.CopyFile “c:\dir\*.*”, “d:\dir\”,TRUE

5) Записать на сервер файл, имя которого состоит из логина, имени машины на которую заходит юзер и дату захода (файл включает в себя описание ip конфига машины, на которую залогинелся юзер - посредством терминала или локально):

Скрипт

strComputer = “.”
Set objNetwork = Wscript.CreateObject(”Wscript.Network”)
computerName = objNetwork.ComputerName
Dim objFileSystem, objOutputFile
Dim strOutputFile
Dim MyDate
MyDate = Date
Set objFileSystem = CreateObject(”Scripting.fileSystemObject”)
set wshshell = CreateObject(”WScript.Shell”)
wshshell.Run “%comspec% /c ipconfig /all >\\serv\users\ip\date_%computername%.txt”

6)Запуск определённого приложения:

Скрипт

set wshshell = CreateObject(”WScript.Shell”)
wshshell.Run “c:\temp\1.msc”

7)Запуск приложения исходя из имени компьютера:
Скрипт

Set oWshNet = CreateObject(”WScript.Network”)
sComputer = oWshNet.ComputerName
s3ChrName = LCase(Left(sComputer, 3))

‘ Note: имена компьютеров пишите маленькими буквами.
Select Case s3ChrName
Case “mts”
WScript.Echo “Do something here for acc”
Case “hrs”
WScript.Echo “Do something here for hrs”
Case Else
set wshshell = CreateObject(”WScript.Shell”)
wshshell.Run “c:\temp\1.msc”
End Select

8) Запуск окна поиска (в Explorer) ожидание 500мс и нажатие TAB

Скрипт

set WshShell = WScript.CreateObject(”WScript.Shell”)
WshShell.SendKeys “{F3}”
WScript.Sleep 500
WshShell.SendKeys “{TAB}”

9) Запускаем скрипт, он смотрит свободное место на выбранном диске, если его мало отправляет почту, если места достаточно отправляет отчёт
Скрипт

Set oFs = WScript.CreateObject(”Scripting.FileSystemObject”)
Set oDrives = oFs.Drives

for each oDrive in oDrives
Select case oDrive.DriveLetter
Case “C”
‘MsgBox oDrive.FreeSpace & VbCrLf

if oDrive.FreeSpace < 20000000000 then ' Less than 2 GB free...
'Create text file

strOutputFile = “c:\sms_1\serverlog.Log”
Set objFileSystem = CreateObject(”Scripting.fileSystemObject”)
Set objOutputFile = objFileSystem.CreateTextFile(strOutputFile, TRUE)
objOutputFile.WriteLine”Server Sergey: ” & “Disk FULL !”
objOutputFile.Close

Set objEmail = CreateObject(”CDO.Message”)
Set objFSO = CreateObject(”Scripting.FileSystemObject”)
Set objFile = objFSO.OpenTextFile(”C:\sms_1\serverlog.log”, 1)
strResponses = objFile.ReadAll
objEmail.From = “admin@faq-cisco.ru”
objEmail.To = “cognize@yandex.ru”
objEmail.Subject = “T03 Disk Full !”
objEmail.Textbody = strResponses
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/sendusing”) = 2
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/smtpserver”) = _
“mail.faq-cisco.ru”
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/smtpserverport”) = 25
objEmail.Configuration.Fields.Update
objEmail.Send
objFile.Close

Else

strOutputFile = “c:\sms_1\serverlog.Log”
Set objFileSystem = CreateObject(”Scripting.fileSystemObject”)
Set objOutputFile = objFileSystem.CreateTextFile(strOutputFile, TRUE)
objOutputFile.WriteLine”Server Sergey: ” & “FREE Disk Space on drive C: ” & ((oDrive.FreeSpace & VbCrLf)/1048576) & ” ” & “MB”
objOutputFile.Close

Set objEmail = CreateObject(”CDO.Message”)
Set objFSO = CreateObject(”Scripting.FileSystemObject”)
Set objFile = objFSO.OpenTextFile(”C:\sms_1\serverlog.log”, 1)
strResponses = objFile.ReadAll
objEmail.From = “admin@faq-cisco.ru”
objEmail.To = “admin@faq-cisco.ru”
objEmail.Subject = “T03 Free Disk Space !”
objEmail.Textbody = strResponses
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/sendusing”) = 2
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/smtpserver”) = _
“mail.faq-cisco.ru”
objEmail.Configuration.Fields.Item _
(”http://schemas.microsoft.com/cdo/configuration/smtpserverport”) = 25
objEmail.Configuration.Fields.Update
objEmail.Send
objFile.Close
end If
End Select
Next

10) Скрипт ждёт пока не закроется определённое приложение, после чего выключает компьютер

Скрипт

sCommand = “notepad.exe”
sComputer = “.” ‘ use “.” for local computer

Set oWMI = GetObject(”winmgmts:” _
& “{impersonationLevel=impersonate}!\\” _
& sComputer & “\root\cimv2″)

iRC = oWMI.Get(”Win32_Process”).Create(sCommand, Null, Null, iProcessID)

‘ iRC will indicate if the app was successfully launched or not
If iRC = 0 Then
‘ loop as long as process exists
On Error Resume Next
Do
WScript.Sleep 1000
Set oMyProcess = oWMI.Get(”Win32_Process=’” & iProcessID & “‘”)
bolFinished = CBool(Err.Number)
Loop Until bolFinished
On Error Goto 0
set wshshell = CreateObject(”WScript.Shell”)
wshshell.Run “shutdown /r /t 60″
Else
WScript.Echo “Could not start application!”
End If
Надеюсь что наглядность области применения скриптов Вас заинтересовала. Всё зависит от нужд и фантазий, остальное реализуемо.

Удачи.

Если возникли вопросы, Вы можете задать их в форуме

Comments are closed.


@Mail.ru