вторник, 17 апреля 2018 г.

Отправка сообщения через smtp сервер

'Данный скрипт копирует получает на вход аргумент в виде имени базы данных
'и отправляет сообщение на почту письмо с тем, что файл с именем базы данных не найден

Set objArgs = WScript.Arguments

Set myMail=CreateObject("CDO.Message")
myMail.Subject="Ошибка копирования бэкапа БД на удаленный сервер"
myMail.From="from@mail.ru"
myMail.To="to@mail.ru"
myMail.TextBody="Не найден файл " + objArgs(0) + " резервной копии БД в каталоге бэкапов для копирования на удаленный сервер"
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2

'Name or IP of remote SMTP server
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")="mail.test.ru"

'порт smtp сервера
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=587

'Отправка с аутентификацией
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "sender@mail.ru"
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "12345678"

myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing

'Командная строка для запуска данного скрипта:
'cscript.exe <Имя файла скрипта> <FileName>

вторник, 9 января 2018 г.

Рекурсивный обход папок

'Создаём и запускаем диалог выбора корневой папки
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Select a folder:", 0)
'Если пользователь не выбрал папку, завершаем приложение
If objFolder Is Nothing Then Wscript.Quit
'Получаем путь к выбранной папке
objPath = objFolder.Self.Path
'Создаем объект папки файловой системы
'и отправляем его в рекурсивную функцию
Set FSO = CreateObject("Scripting.FileSystemObject")
ShowSubFolders FSO.GetFolder(objPath)
'Сигнализируем о завершении программы
Wscript.Echo "Завершено в " & objPath
'Функция рекурсивного обхода папок
Sub ShowSubFolders(Folder)
'Перебираем подпапки
 For Each Subfolder in Folder.SubFolders
'В каждой подпапке Subfolder делаем нужное нам черное дело
'Например, выводим её имя
   Wscript.Echo Subfolder.Name
'Рекурсивно вызываем функцию для подпапок текущей папки
   ShowSubFolders Subfolder
  Next
End Sub

понедельник, 25 ноября 2013 г.

пятница, 11 октября 2013 г.

Узнать SID по имени пользователя и наоборот

'Узнать SID по имени пользователя

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get _
("Win32_UserAccount.Name='vasya',Domain='domain'")
Wscript.Echo objAccount.SID

'Узнать имя пользователя по его SID

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get _
("Win32_SID.SID='S-1-5-21-4122063186-443647741-4275581403-5649'")
Wscript.Echo objAccount.AccountName
Wscript.Echo objAccount.ReferencedDomainName

Ссылка на страницу источник

понедельник, 5 августа 2013 г.

Вызов диалога выбора папки

Dim objPath, objFolder, objFolderItem, objShell, strPath
Const MY_COMPUTER = &H11&
Const WINDOW_HANDLE = 0
Const OPTIONS = 0
objPath = ""
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MY_COMPUTER)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
  Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, "Выберите папку:", OPTIONS, strPath)
If Not objFolder Is Nothing Then
   Set objFolderItem = objFolder.Self
   objPath = objFolderItem.Path
Else
   MsgBox "Каталог не выбран!"
   wscript.quit
End If