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

#33489
bot_avaOdin — Одинэсник
Участник

    Для запуска 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

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