1

Тема: VBScript: интеграция с PowerShell с помощью компонента ActiveXPosh

Бесплатный COM-сервер от компании SAPIEN ActiveX PowerShell (ActiveXPosh) осуществляет довольно гибкую интеграцию с Powershell и позволяет использовать команд-леты и сценарии Powershell изнутри любого языка сценариев. Компонент доступен на странице http://www.primaltools.com/freetools/. При переходе по ссылке для скачивания вас попросят указать имя и e-mail, после чего на e-mail придёт собственно ссылка на скачивание. В поставку включены примеры работы документация в формате PDF, объект имеет 10 свойств и методов. Дистрибутив (инсталлятор) имеет размер менее 1 Мб.

Саму PowerShell, которая должна быть установлена, можно скачать с сайта Microsoft (инсталлятор для Windows XP имеет размер порядка 1.7 Мб).

Простейший пример выводит список запущенных процессов:

Set oPosh = CreateObject("SAPIEN.ActiveXPoSH")
oPosh.Init(vbFalse)
oPosh.OutputMode = 2 ' OUTPUT_BUFFER
oPosh.Execute("get-process")
WScript.Echo oPosh.OutputString

Проверка существования процесса:

Set oPosh = CreateObject("SAPIEN.ActiveXPoSH")
oPosh.Init(vbFalse)
If oPosh.Eval("get-process winword") = vbTrue Then
    WScript.Echo "Microsoft Word запущен."
Else
    WScript.Echo "Microsoft Word НЕ запущен."
End If
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: VBScript: интеграция с PowerShell с помощью компонента ActiveXPosh

Закачка файла по HTTP средствами .NET:

Set oPosh = CreateObject("SAPIEN.ActiveXPoSH")
oPosh.Init(vbFalse)
oPosh.Execute("$Client = new-object System.Net.WebClient")
Command = "$Client.DownloadFile('http://www.script-coding.com/IE_OLE.zip', 'C:\Temp\test.zip')"
WScript.Echo "Загрузка..."
oPosh.Execute(Command)
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists("C:\Temp\test.htm") Then
    WScript.Echo "Загрузка завершена."
Else
    WScript.Echo "Загрузка не удалась."
End If

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

Set oPosh = CreateObject("SAPIEN.ActiveXPoSH")
oPosh.Init(vbFalse)
oPosh.OutputMode = 2 ' OUTPUT_BUFFER
oPosh.Execute("Get-WmiObject -class Win32_Service | Format-Table -property Name, State")
For Each str In oPosh.Output
    WScript.Echo str
Next

Получение строкового значения вычисленного выражения PowerShell:

Set oPosh = CreateObject("SAPIEN.ActiveXPoSH")
oPosh.Init(vbFalse)
WScript.Echo oPosh.GetValue("$PSHOME")
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.