Контактные данныеНаш адрес: Москва, ул. Рабочая 32-4
Тел.: +7 (495) 753 42 45
Факс: +7 (495) 753 42 45
Выполнение VBS файла из PowerShell
Встречаются случаи, когда необходимо интегрировать не программный код в PowerShell, а вызвать готовый VBS-файл, задав аргументы командной строки. Для реализации этого метода используется встроенный в операционную систему интерпретатор Wscript.exe или Cscript.exe. В листинге 4а приведен пример вызова файла test.vbs. Текст файла test.vbs листинге 4б. Результатом выполнения сценариев является вывод информационного сообщения.
PowerShell и компилируемые языки программирования: Довольно часто возникает потребность использовать вставки VB.NET или C в листинге PowerShell. Это обуславливается невозможностью реализовать тот или иной функционал при помощи PowerShell. Как правило, любую манипуляцию с любым объектом можно выполнить с помощью с API-функции, вызываемой на низком уровне. Ярким примером является служба DFS, программное управление которой возможно только с помощью API-функций.
Чтобы упростить изложение материала отвлечемся от DFS и приведем пример вывода обычного окна сообщения - MessageBox. Реализуем вызов сообщения с помощью вставки листинга программного кода, написанного на VB.NET в тело сценария PowerShell, и с помощью вызова соответствующей API-функции, описанной в VB.NET.
Интеграция кода на VB.NET в PowerShell: Интеграция в PowerShell кода компилируемых языков, например VB.NET или C, осуществляется несколько иным механизмом. Вставка программного кода также компилируется, однако вместо файла записывается в оперативную память. Успешная интеграция программного кода на VB.NET обеспечивается с помощью двух объектов. С помощью первого - CompilerParameters осуществляется настройка параметров компиляции указанного кода, а также идентификация языка программирования.
Второй объект изменяется в зависимости от используемого во вставке языка программирования. Например, для Visual Basic - Microsoft. VisualBasic.VBCodeProvider. Фрагмент исполняемого кода на VB.NET представляет собой описание класса с произвольным именем и минимум одну функцию, имя которой также произвольно.
Листинг является значением переменной, заключенного помимо кавычек в символы. При переносе листинга из Visual Studio в PowerShell необходимо следить за тем, чтобы иерархический путь ко всем методам и функциям был указан целиком, т.к. импорт пространств имен не поддерживается. Таким образом, вывести окно с помощью MsgBox невозможно, необходимо указать полный путь - Microsoft. VisualBasic.Interaction.MsgBox.