|
|
Windows Scripting (выпуск 3)
|
|
|
Здравствуйте!
Рад приветствовать Вас на странице моей рассылки!
Эта рассылка посвящена самым различным аспектам программирования в среде Microsoft Windows Scripting - от конфигурирования и администрирования Microsoft Windows, IIS, Exchange Server и SQL Server до особенностей программирования на VBScript и JScript.
Не забудьте посетить сайт рассылки scripting.narod.ru, где имеется много другой полезной информации, посвященной Windows Script и не вошедшей в рассылку.
Буду также рад получить от Вас письмо с Вашими вопросами, пожеланиями, предложениями и замечаниями: [email protected].
Настоятельная рекомендация тем, кто подписан на текстовую версию рассылки: ***Подпишитесь на HTML-вариант***! Я подготавливаю только HTML-версию рассылки, а текстовая версия автоматически генерируется из нее на Subscribe.ru, причем не самым лучшим образом (:
Посмотрите на HTML-версию этой рассылки, которая находится здесь: http://scripting.narod.ru/issues/issue003.htm.
|
|
|
|
|
|
|
26.09.2000
Выпущен Microsoft SQL Server 2000.
Ознакомительную версию сервера можно скачать с сайта компании: http://www.microsoft.com/sql/downloads/default.htm.
|
|
|
|
Узнать IP-адрес удаленного компьютера можно, например, с помощью
Microsoft Winsock control.
Некоторые особенности кода:
Во-первых, для TCP-соединения с удаленным сервером мы будем использовать порт 139,
на котором "сидит" NETBIOS. Как правило, этот порт доступен всегда.
А самое интересное, метод Connect является асинхронным -
то есть возврат из него осуществляется сразу же, не дожидаясь установления соединения.
Чтобы узнать о соединении (или о произошедшей ошибке), нам нужно дождаться события
Connect (или, соответственно, события Error). Реализовать это в скрипте не так уж и просто.
Воспользуемся простейшим вариантом - после метода Connect покажем message box,
а после получения события - закроем его.
В-третьих, обратите внимание, как мы из скрипта закрываем диалог - с помощью
метода SendKeys стандартного объекта WScript.Shell мы посылаем диалогу сообщение о
нажатии клавиши Escape.
Листинг
Option Explicit
Const AppName = "Remote IP"
Dim Server
Server = InputBox("Enter server name:", AppName)
If Len(Server) = 0 Then WScript.Quit
Dim Winsock
Set Winsock = WScript.CreateObject("MSWinsock.Winsock", "Winsock_")
Winsock.Connect Server, 139
Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")
MsgBox "Please wait...", vbInformation, AppName
Set Winsock = Nothing
Set Shell = Nothing
Sub Winsock_Connect
MsgBox "IP address for " & Server & " is " & _
Winsock.RemoteHostIP, vbInformation, AppName
CloseMsgBox
End Sub
Sub Winsock_Error(Number, Description, Scode, Source, _
HelpFile, HelpContext, CancelDisplay)
MsgBox "Error " & Number & vbNewLine & Description, vbCritical, AppName
CloseMsgBox
End Sub
Sub CloseMsgBox
Shell.AppActivate AppName
Shell.SendKeys "{ESC}"
End Sub
|
|
|
|
При использовании Microsoft Visual SourceSafe у администратора часто возникает
необходимость узнать, какие файлы находятся в состоянии checked-out.
Приведенный здесь скрипт решает эту проблему.
В ходе своей работы скрипт создает в текущем каталоге текстовый CSV-файл со списком всех
checked-out файлов и для каждого такого файла указывает его полный путь в SourceSafe,
а также кто и когда сделал checkout.
Полученный CSV-файл можно загрузить в Microsoft Excel для последующего анализа.
Комментарии к коду:
- Прежде чем запустить скрипт, измените параметры Path, User, Password и StartFrom
в соответствии с Вашей ситуацией.
- Алгоритм работы прост - мы открываем базу данных SourceSafe с заданными
именем пользователя и паролем, и, начиная с заданной точки, рекурсивно
обходим все проекты. В каждом проекте мы извлекаем информацию о checked-out
файлах и записываем ее в текстовый CSV-файл.
- Запись в CSV-файл осуществляется стандартно, через объект FileSystemObject.
Листинг
Option Explicit
' Измените эти параметры в соответствии с Вашей ситуацией
Dim Path, User, Password, StartFrom
Path = "C:\Program Files\Microsoft Visual Studio\VSS\srcsafe.ini"
' полный путь к файлу srcsafe.ini
User = "user" ' имя пользователя SourceSafe
Password = "password" ' пароль пользователя
StartFrom = "$\" ' проект, с которого начинать рекурсию
' Создаем пустой CSV-файл и пишем в него заголовок
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim File
Set File = FSO.OpenTextFile("checkouts.csv", 2, True)
File.WriteLine """File Path"";""User Name"";""Checkout Time"""
' Открываем SourceSafe
Dim VSSDatabase
Set VSSDatabase = CreateObject("SourceSafe.0")
VSSDatabase.Open Path, User, Password
Dim RootItem
Set RootItem = VSSDatabase.VSSItem(StartFrom)
' Рекурсивно проходим по всем проектам
Scanner RootItem.Items
' Закрываем SourceSafe
Set VSSDatabase = Nothing
' Закрываем файл
File.Close
Set FSO = Nothing
' Все
MsgBox "Finished.", vbInformation
WScript.Quit
' --------------------------------------------------------------------
' Процедура рекурсивного прохода по всем проектам
Sub Scanner(Items)
Dim Item
For Each Item In Items
If Item.Type = 0 Then ' VSSITEM_PROJECT
Scanner Item.Items
ElseIf Item.Type = 1 Then ' VSSITEM_FILE
If Item.IsCheckedOut Then
Dim Checkout
For Each Checkout In Item.Checkouts
' цикл на случай multiple checkouts
File.WriteLine """" & Item.Spec & _
""";" & Checkout.UserName & _
";""" & Checkout.Date & """"
Next
End If
End If
Next
End Sub
' --------------------------------------------------------------------
|
|
|
Кратко
Этот бесплатный и очень популярный ActiveX позволяет выполнять следующие действия:
- посылка почтовых сообщений по протоколу SMTP;
- прием почты по протоколу POP3;
- шифровка писем с помощью PGP;
- массовая рассылка писем.
Ссылки
Домашняя страница
Скачать дистрибутив
Скачать документацию
Стартовая страница сервера (там есть и другие компоненты!)
Объект JMail.SpeedMailer
Этот объект позволяет осуществлять посылку писем с помощью вызова буквально
одного метода этого объекта. Письмо можно послать тремя способами:
- по протоколу SMTP;
- через pickup-каталог;
- через не очень пока для меня понятный метод SendXMLMail.
Простая посылка письма по протоколу SMTP
Во-первых, создаем объект SpeedMailer:
Set JMail = CreateObject("JMail.SpeedMailer")
А теперь посылаем письмо:
JMail.SendMail "me@myDomain.com", "scripting@narod.ru", _
"Subject", "Body", "smtp.narod.ru"
Первый параметр - это адрес или имя отправителя, может быть любым.
Второй параметр - адрес получателя.
Третий - заголовок письма, четвертый - тело письма.
Пятый - имя доступного Вам SMTP-сервера, через который будет отправлено письмо.
Можно послать письмо сразу нескольким адресатам.
В этом случае их адреса разделяются запятой:
JMail.SendMail "me@myDomain.com", "scripting@narod.ru, me@myDomain.com", _
"Subject", "Body", "smtp.narod.ru"
А теперь все вместе:
Option Explicit
Dim JMail
Set JMail = CreateObject("JMail.SpeedMailer")
JMail.SendMail "me@myDomain.com", "scripting@narod.ru", _
"Subject", "Body", "smtp.narod.ru"
Set JMail = Nothing
Продолжение следует...
|
|
|
|
Статья посвящена использованию функции Split.
Эта функция принимает на входе строку, разбивает ее на части в соответствии
с указанным разделителем и возвращает массив строк.
|
|
|
|
- Главная страница -
Главная страница сайта: scripting.narod.ru.
- Новости -
Новости мира Windows Scripting.
- Вопросы и ответы -
В этом разделе Вы можете найти ответы на часто задаваемые вопросы и задать свой.
- Скрипты -
Здесь содержатся исходные тексты скриптов, в основном на VBScript.
- ActiveX -
Аннотированный список ActiveX-компонент, которые могут быть полезными при написании скриптов.
- Книжная полка -
Избранные книги по тематике сайта.
- Knowledge Base -
Ссылки на избранные статьи из Microsoft Knowledge Base.
- Конференции -
Список избранных телеконференций, посвященных скриптингу.
- Ссылки -
Список ссылок на сайты схожей тематики.
|
|
|
|
|
|
|