Odin | База знаний 1С

Как запустить PowerShell из 1С: пример кода?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Нужно помочь с примером кода 1С для запуска powershell.



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Для запуска PowerShell из 1С можно использовать объект `ВнешниеКоманды` или `Процесс`, либо через COM-объект `WScript.Shell`. Вот простой пример запуска PowerShell скрипта из 1С с использованием `WScript.Shell`:

1C
Процедура ЗапуститьPowerShell(Команда)
    // Создаем объект для запуска внешних команд
    WshShell = Новый COMОбъект("WScript.Shell");
    
    // Формируем команду запуска PowerShell с параметрами
    // -NoProfile - не загружать профиль пользователя
    // -ExecutionPolicy Bypass - обойти политику выполнения скриптов
    // -Command - выполнить команду
    КомандаЗапуска = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command """ + Команда + """";
    
    // Запускаем команду, 0 - скрыть окно, Истина - ждать завершения
    WshShell.Run(КомандаЗапуска, 0, Истина);
КонецПроцедуры

// Пример вызова
ЗапуститьPowerShell("Write-Output 'Привет из PowerShell!'");

Если нужно запускать внешний PS1 файл, то команда будет примерно такой:

1C
ПутьКСкрипту = "C:\Scripts\myscript.ps1";
КомандаЗапуска = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File """ + ПутьКСкрипту + """";
WshShell.Run(КомандаЗапуска, 0, Истина);

Также можно использовать объект `ВнешниеКоманды` (начиная с 1С 8.3.10):

1C
Процедура ЗапуститьPowerShellЧерезВнешниеКоманды(Команда)
    КомандаВыполнения = Новый ВнешниеКоманды.Команда("powershell.exe");
    КомандаВыполнения.Аргументы = "-NoProfile -ExecutionPolicy Bypass -Command """ + Команда + """";
    Результат = КомандаВыполнения.Выполнить();
    Если Результат.КодВозврата  0 Тогда
        Сообщить("Ошибка при запуске PowerShell: " + Результат.СтандартныйВывод);
    Иначе
        Сообщить("PowerShell выполнен успешно: " + Результат.СтандартныйВывод);
    КонецЕсли;
КонецПроцедуры

// Вызов
ЗапуститьPowerShellЧерезВнешниеКоманды("Write-Output 'Привет из PowerShell!'");

Таким образом, вы можете запускать любые команды PowerShell из 1С.

Рекомендую посмотреть здесь:
https://infostart.ru/public/1154294/
https://helpf.pro/faq/view/1145.html



   
ОтветитьЦитата