Строка запуска команды powershell из 1С

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

- уведомление также вывелось корректно.
Предварительно моргнуло окно PS, затем уведомление.
Моя конфигурация: Win 10, 1С:Предприятие 8.3 (8.3.20.1838) Толстый клиент.
9. podder 02.08.22 10:06 Сейчас в теме
(8) хммм, может, какой-то "прикол" в платформе 8.2.....неверно пересылает строку запуска. У меня та же строчка вызывает только моргание экрана PS. При этом та же строка запуска исправно отрабатывает через cmd или пункт "Выполнить" в меню "Пуск". Спасибо за информацию, попробую отработать в этом направлении.
12. Zevzm 02.08.22 12:45 Сейчас в теме
(9) Изменил режим совместимости конфигурации на 8.1, затем 8.2.16 все отработало корректно. База локальная, абсолютно пустая. Попробуйте создать пустую на локальном ПК без сервера для проверки.
13. podder 02.08.22 13:15 Сейчас в теме
(12) База файловая - и так на локальном ПК. Пока разбираюсь. Есть мысль, что дело не только в номере версии 1С, но думаю, не знаю еще, куда копать. Спасибо за инфу.
2. booksfill 01.08.22 17:27 Сейчас в теме
Я не понял, что конкретно означает параметр и как вы догадались, что ничего не исполняется.
Вы хоть окно-то пока оставляйте открытым, см. параметр номер 3.

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

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

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


Я имел ввиду это. Вручную через командное окно от админа у вас запускается?
cmd /k "cd /d c:\myfolder && startbatch.bat"
11. podder 02.08.22 12:38 Сейчас в теме
(10)
cmd /k "cd /d c:\myfolder && startbatch.bat"

У меня это запускается даже без &&. Могу написать как "cmd /K powershell c:\script.ps1 и в Выполнить эта команда работает. Эта команда также работает из консоли cmd. А в 1С именно 8.2 - нет, мигает окно PS и все.
14. podder 02.08.22 13:25 Сейчас в теме
Да, видимо, дело не в самой 1С, в 8.3.13.1926 эта команда тоже не работает, вылетает окно PS и тут же исчезает.
15. Ali_q 1 02.08.22 13:46 Сейчас в теме
Я делал через БСП - Работает как часы, вот код:

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

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

КонецФункции

Показать
16. podder 02.08.22 13:58 Сейчас в теме
Разобрался. Дело было не в платформе 1С.
При работе powershell из папки пользователя C:\users\ххх скрипт срабатывал. Вписал -noexit, чтобы увидеть ошибку и вижу следующее: при выполнении команды "ЗапуститьПриложение" место выполнения определялось как папка common из директории 1С и тут хопа, ловлю ошибку того, что скрипт не загрузился с вердиктом "выполнение скриптов запрещено в этой системе". Разрешаем скрипты PowerShell в gpedit.msc и теперь все работает. Всем спасибо, все свободны =)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот