Welcome to Scripting Games 2009!

Стандартный

В этом году Microsoft Scripting Games пройдут летом. Scripting Games — это отличная возможность разобраться с VBScipt и/или Power Shell’ом для начинающих и прокачать свои скилы для продвинутых скриптеров. В этом году игры начнутся 15 июня.

Участникам предлагается решить 10 задач на одном из двух языков (или на обоих сразу). Есть два уровня сложности: beginner и advanced. Участвовать можно сразу в обоих уровнях. Итого можно написать 40 скриптов (20 на VBScript и 20 на Power Shell). Все задания занимательные и полезные. Решать их интересно. В этом году можно будет просмотреть скрипты других участников, что не может не радовать :)

Тем, кто успешно справится с заданиями, могут достаться призы. Какие именно — пока не очень ясно. Подробнее можно посмотреть здесь. В прошлом году всем участникам высылали сертификаты и случайным образом разыгрывали дистрибутивы MS Vista, Sapien PrimalScript и пр.

Короче, всем кто интересуется VBScript и Power Shell настоятельно рекомендую участвовать :)

Как можно автоматизировать проверку инсталляции

Стандартный

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

Как растабулировать xml-документ

Стандартный

Если создавать xml-документ с помощью Microsoft.XMLDOM, то в текстовом виде файл этот почему-то записывается в одну строку. Вобщем-то, если работать с файлом программно или смотреть его с помощью, например, Internet Explorer, то проблем не возникает.  Но вот просматривать/редактировать такой файл с помощью текстового редактора страшно неудобно, особенно если хочется быстро поменять какой-то параметр в файле на стенде, где не стоит никаких специальных тулов. Следущая функция на VBScript умеет делать из однострочного xml-документа нормальный, со всеми нужными отступами. Читать далее

Как из скрипта запустить Windows-службу с параметром

Стандартный

Как-то раз мне понадобилось запустить из vbs-скрипта службу с параметром. Долго искал как это сделать, нашел только один способ. Есть такая полезная штука — Windows Server 2003 Resource Kit Tools. Это набор различных утилит для администрирования. В том числе там есть тула SC.exe.

SC представляет собой программу командной строки, используемую для связи диспетчера управления службами со службами.

Так вот, это тула много чего умеет делать со службами:

  • Запускать/останавливать;
  • Получать состояние службы;
  • Удалять службы;
  • Получать зависимости службы и другие параметры.

Синтаксис у нее следующий:

sc <сервер> [команда] [имя службы] <параметр1> <параметр2>...

Чтобы запустить службу с параметром, нужно выполнить следующую команду:

sc.exe start MySrv MyParam

Где MySrv — имя службы (которое не Display Name, а Service Name), MyParam — параметр службы.

Собственно, для запуска из скрипта можно использовать следующий код:

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim objSc
Set objSc = WshShell.Exec("sc.exe start MySrv MyParam")
Do While True
    If objSc.Status = 1 Then
        Exit Do
    Else
        WScript.Sleep 1000
    End If
Loop
If objSc.ExitCode <> 0 Then
    Wscript.Echo "Cannot start service 'MyService'" & _
        "sc.exe exit code = " & objSc.ExitCode
    Wscript.Quit 2
End If

PS. В этом же Resource Kit есть утилита Sleep.exe, которая просто умеет «засыпать». Ее полезно использовать в bat-файлах, если нужно приостановить выполнение команд.

Генерация xml-документов с помощью VBScript

Стандартный

Многие програмы хранят данные/настройки и т. п. в xml-документах. Часто при тестировании необходимо проверить что программа корректно ведет себя на довольно большом объеме этих саммых данных. Для этого бывает достаточно просто сгенерировать «большой» xml-документ. В принципе, для этого существуют специальные утилиты, но мне это проще сделать с помощью VBScript :) Собственно, о том как это сделать, я и собираюсь рассказать. Читать далее

Как в Excel вернуть комментарии на место

Стандартный

У меня довольно часто «съезжают» комментарии к ячейкам в Excel, что очень неприятно, когда их много. Оказывается, есть простой способ вернуть их на место. Для этого добавляем в книгу такой макрос:

Sub ResetComments()
    Dim cmt As Comment
    For Each cmt In ActiveSheet.Comments
        cmt.Shape.Top = cmt.Parent.Top + 5
        cmt.Shape.Left = cmt.Parent.Offset(0,1).Left + 5
    Next
End Sub

Запускаем и вуаля — все комментарии около своих ячеек ;)

Кучу подобных полезностей можно найти тут.

Как организовать скрытый ввод пароля в vbscript

Стандартный

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

Set objPwd = WScript.CreateObject(«ScriptPW.Password»)
strUserPassword = objPwd.GetPassword()
WScript.Echo strUserPassword

Примечание: Данный код работает только при запуске через cscript.exe.