Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев.
На текущий момент я знаю пару способов работы в 1С с PowerShell:
1) Самый простой, это просто запустить написанный скрипт:
ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>)
2) Установить бесплатный activex от sapien. И работать по COM.
3) Использовать платную разработку.
3а) Самому сделать web сервер и написать код в 1C для взаимодействия.
Рассматривать первый вариант мы не будем. Здесь нет программирования в принципе, но для начинающих программистов это единственный выход.
Использовать платную разработку я бы не стал, а самому делать web сервер нужно еще научиться.
Поэтому вариант с работой по COM идеальное решение!
Итак, с чего же начать!
Вам понадобится пакет установки ActiveXPoshV3:
1) Для 32-битного клиента ActiveXPoshV3x86.exe
2) Для 64-битного сервера ActiveXPoshV3x64.exe
Если ссылки будут недоступны, то зайдите на официальный сайт, там точно они будут.
Или смотрите в архиве! Пароль: infostart.
Для работы на стороне клиента, т.е. в пользовательском режиме установите 32-битную версию. А для работы и на сервере, например в регламентном задании 64-битную версию.
Так же возможно вам придется зарегистрировать компоненты через regasm 32-битный в папке Framework , 64-битный в Framework64.
Примерно так:
regasm путь\ActiveXPoSH.dll /CODEBASE
Далее для надежности перезагружаем сервер. Все, можно создавать COM-объект.
Важно! Не забывайте для корректной работы у вас должны быть соответсвующие права в системе!
Работа в 1С
Пример работы с компонентой описан в файле ActiveXposhV3.vbs. Этот файл будет находиться в папке, где вы установили ActiveXposh.
Прочитав код, можно написать в 1С примерно такое:
Перем ActiveXPosh;
Перем OUTPUT_CONSOLE;
Перем OUTPUT_WINDOW;
Перем OUTPUT_BUFFER;
Процедура КнопкаВыполнитьНажатие(Кнопка)
ListServices();
КонецПроцедуры
Процедура ПриЗакрытии()
ActiveXPosh = "";
КонецПроцедуры
Процедура ПриОткрытии()
Попытка
ActiveXPosh = Новый COMОбъект("SAPIEN.ActiveXPoSHV3");
ActiveXPosh.OutputMode = OUTPUT_BUFFER;
success = ActiveXPosh.Init(False);
Если success <> 0 Тогда
Сообщить("Init failed");
КонецЕсли;
Если ActiveXPosh.IsPowerShellInstalled Тогда
Сообщить("Готов выполнять команды PowerShell");
Иначе
Сообщить("PowerShell не установлена");
КонецЕсли;
Для Каждого Строка Из ActiveXPosh.Output Цикл
Сообщить(Строка);
КонецЦикла;
Исключение
Сообщить("SAPIEN.ActiveXPoSHV3 не установлена!");
КонецПопытки;
КонецПроцедуры
Функция ListServices()
ActiveXPosh.OutputMode = OUTPUT_BUFFER;
//Можно изменить ширину
//ActiveXPosh.OutputWidth = 400;
//Пример команд
ActiveXPosh.Execute("Get-WmiObject -class Win32_Service | Format-Table -property Name, State");
Для Каждого Строка Из ActiveXPosh.Output Цикл
Сообщить(Строка);
КонецЦикла;
ActiveXPosh.ClearOutput();
КонецФункции
OUTPUT_CONSOLE = 0;
OUTPUT_WINDOW = 1;
OUTPUT_BUFFER = 2;
Данная компонента поддерживает выполнение следующих команд:
ClearOutput() - Этот метод очищает внутренний буфер вывода.
Execute(strcommand) - Выполняет команду PowerShell или сценария.
Eval(strExpression) - Вычисляет выражение PowerShell.
Init(execProfile) - Первоначальный вызов экземпляра движка PowerShell.
IsPowerShellInstalled - Возвращает Истина / Ложь.
Output - Коллекция строк заполнены с выходом из PowerShell команды.
OutputString - Содержание буфера вывода в виде одной строки.
OutputMode - Устанавливает или получает режим вывода результата.
OutputWidth - Задает или получает желаемую ширину выходного результата.
Оригинал:
ClearOutput() - This method clears the internal output buffer.
Execute(strcommand) - Executes a PowerShell command or script.
Eval(strExpression) - Evaluates a PowerShell expression.
Init(execProfile) - Initial call to instantiate a PowerShell engine.
IsPowerShellInstalled - Returns True/False.
Output - A collection of strings filled with output from PowerShell commands.
OutputString - The content of the output buffer as a single string.
OutputMode - Sets or gets the current output mode.
OutputWidth - Sets or gets the desired output width.
Обработка изнутри
Разработка представляет собой набор кода для работы PowerShell в 1С, используя компоненту "SAPIEN.ActiveXPoSHV3" через COM.
Особенностью разработки является возможность работы с удаленной командной консолью MS Exchange. Справка.
Это позволяет с сервера 1С подключиться к почтовому серверу MS Exchange и продолжить работу PowerShell на нем.
Так же в разработку встроен код универсального парсера CSV-файлов. Это помогает решить специфическую задачу, получения всех данных после выполнения сценария PowerShell в читаемой таблице 1С.
Т.е. что происходит. Вы написали сценарий PowerShell, результат выгрузили в файл CSV. И затем загрузили эти данные на экран в удобном виде.
Благодарности
Особая благодарность пользователю cool.vlad4. Очень помог с первоначальной настройкой и примером кода.
Также выражаю благодарность всем толковым админам. Без вашей помощи запускать компоненты на сервере очень сложно!
Обновление от 09.11.2015
Улучшен интерфейс:
Добавлены реквизиты периода.
Для ознакомления добавлены кнопки для записи регистра сведений (заполнение измерений) и полной очистки самого регистра сведений.
Улучшен пример сценария на PowerShell.
Обновлен универсальный парсер CSV-файлов.