Добрый день, уважаемые специалисты и гости форума. Нужна ваша помощь. Платформа 8.2 Толстый клиент.
Пытаюсь запустить строку команды PowerShell из 1С разными способами с параметрами. Пробую через ЗапуститьПриложение("powershell -параметр команда") - PowerShell запускается, окно мигает и исчезает, а все, что после - не исполняется, т.е. не видит параметров. Аналогично пробую через WScript.Shell, пересылаю строку, которую "собираю" таким же способом, результат тот же. Пытаюсь внутри для параметров использовать """, но результата нет - окно PowerShell мигает и параметры с командами после "powershell... не выполняются. Кто сталкивался, как победил? Причем, строка вида "explorer.exe" + " "+""""+ Параметр +"""" выполняется, а если поменять "explorer.exe" на "powershell.exe" или просто на "powershell" - уже не выполняется, параметр не виден. Заранее спасибо за помощь.
---
Разобрался. Дело было не в платформе 1С.
При работе powershell из папки пользователя C:\users\ххх скрипт срабатывал. Вписал -noexit, чтобы увидеть ошибку и вижу следующее: при выполнении команды "ЗапуститьПриложение" место выполнения определялось как папка common из директории 1С и тут хопа, ловлю ошибку того, что скрипт не загрузился с вердиктом "выполнение скриптов запрещено в этой системе". Разрешаем скрипты PowerShell в gpedit.msc и теперь все работает. Всем спасибо, все свободны =)
---
Добрый день. В этой теме есть пример работы с bat. Посмотрите, может поможет. https://forum.infostart.ru/forum9/topic285286/
---
этот вариант у меня как резервный. Я хотел избавиться от ненужных файлов в системе. Да и просто заинтересовал вопрос, почему нельзя элементарно отдать команду.
---
Импортировал у себя модуль BurntToastNotification, выполнил команду "New-BurntToastNotification" в PowerShell - уведомление вывелось.
Создал внешнюю обработку с кодом:
Процедура КнопкаВыполнитьНажатие(Кнопка)
 ЗапуститьПриложение("powershell New-BurntToastNotification",,Истина);
КонецПроцедуры

- уведомление также вывелось корректно.
Предварительно моргнуло окно PS, затем уведомление.
Моя конфигурация: Win 10, 1С:Предприятие 8.3 (8.3.20.1838) Толстый клиент.
---
хммм, может, какой-то "прикол" в платформе 8.2.....неверно пересылает строку запуска. У меня та же строчка вызывает только моргание экрана PS. При этом та же строка запуска исправно отрабатывает через cmd или пункт "Выполнить" в меню "Пуск". Спасибо за информацию, попробую отработать в этом направлении.
---
Изменил режим совместимости конфигурации на 8.1, затем 8.2.16 все отработало корректно. База локальная, абсолютно пустая. Попробуйте создать пустую на локальном ПК без сервера для проверки.
---
База файловая - и так на локальном ПК. Пока разбираюсь. Есть мысль, что дело не только в номере версии 1С, но думаю, не знаю еще, куда копать. Спасибо за инфу.
---
Я не понял, что конкретно означает параметр и как вы догадались, что ничего не исполняется.
Вы хоть окно-то пока оставляйте открытым, см. параметр номер 3.

Если сделать, как-то так, то, и если передана правильная команда, то окно не закроется и можно будет посмотреть результат.
ЗапуститьПриложение("powershell.exe -command help", , Истина);

В принципе -command здесь параметр и есть, ну вот вам еще один параметр:
ЗапуститьПриложение("powershell.exe -executionpolicy unrestricted -command help", , Истина);

Тоже работает.
---
Я подумал, что правило общее, поэтому не уточнил.
Вот полная команда: ЗапуститьПриложение("powershell New-BurntToastNotification",,Истина);
BurntToast - это небольшой модуль, позволяющий создать тост-уведомление в стиле Windows 10 при помощи PowerShell. Именно вот эта команда отрабатывает как из "Выполнить...", так и в cmd, ну и в PowerShell, ессно. А из 1С - не желает: мигает синее окно PS и тут же закрывается. Строка с "простой" командой ЗапуститьПриложение("powershell.exe -command help", , Истина), действительно, работает. Есть какие-то идеи? Буду рад любому направлению для размышлений.
---
Ну и делайте в cmd, а не в powershell
---
Вы имеете в виду "КомандаСистемы"? Или запуск вида "cmd /K......". В данном случае - тапки те же. Все, что после powershell - отбрасывается. Я пытаюсь уже просто запустить скрипт командой powershell путькскрипту (я даже спецом выбрал простой путь, без пробелов), но у меня та же проблема - скрипт не запускается. Окно PS мигнуло и все. На мгновение я успел заметить, что в этом окне вписался путь. На мгновение...
Вроде и лежит на поверхности, но никак не могу понять, в чем дело. Вариант с запуском скрипта AutoIt или batника я отложил пока про запас.
---
запуск вида "cmd /K......"

Я имел ввиду это. Вручную через командное окно от админа у вас запускается?
cmd /k "cd /d c:\myfolder && startbatch.bat"
---
cmd /k "cd /d c:\myfolder && startbatch.bat"
У меня это запускается даже без &&. Могу написать как "cmd /K powershell c:\script.ps1 и в Выполнить эта команда работает. Эта команда также работает из консоли cmd. А в 1С именно 8.2 - нет, мигает окно PS и все.
---
Да, видимо, дело не в самой 1С, в 8.3.13.1926 эта команда тоже не работает, вылетает окно PS и тут же исчезает.
---
Я делал через БСП - Работает как часы, вот код:

```1c
    &НаСервере
    Функция ТестНаСервере()

    ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
    ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
    ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
    ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина;
    КомандаЗапуска = Новый Массив;
    КомандаЗапуска.Добавить("ping");
    КомандаЗапуска.Добавить("127.0.0.1");
    КомандаЗапуска.Добавить("-c");
    КомандаЗапуска.Добавить(4);
    Результат = ФайловаяСистема.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы);
    Сообщить(Результат.ПотокВывода);

    КонецФункции
```
---
Разобрался. Дело было не в платформе 1С.
При работе powershell из папки пользователя C:\users\ххх скрипт срабатывал. Вписал -noexit, чтобы увидеть ошибку и вижу следующее: при выполнении команды "ЗапуститьПриложение" место выполнения определялось как папка common из директории 1С и тут хопа, ловлю ошибку того, что скрипт не загрузился с вердиктом "выполнение скриптов запрещено в этой системе". Разрешаем скрипты PowerShell в gpedit.msc и теперь все работает. Всем спасибо, все свободны =)
---
мне помогло только добавить & и ' ' по пути программы, без этого ругался что не понимает что за команда
ТекстСкрипта.УстановитьТекст("& 'C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe' "
 + ""
 + путьдофайла
 + ""
.........