Powershell.exe запускает скрипт в cli или в оболочке?

У меня есть стороннее приложение, которое можно расширить, добавив исполняемые файлы, которые выполняют преобразование данных и т. д. Я написал расширение в Powershell, которое выполняет нужное мне преобразование, но я не могу заставить стороннее приложение запускать мою ps1. , так как он принимает только файл .exe в качестве расширения. Приложение добавляет имя файла в качестве первого (и единственного) аргумента командной строки для расширения, поэтому выполняемая им команда выглядит так:

someprogram.exe somefile.xml

Я пытался заставить его запускать Powershell.exe с моим скриптом в качестве аргумента, но я не смог понять, как и возможно ли это. Некоторые вещи, которые я пробовал, например

powershell.exe myscript.ps1

не будет работать. Я попытался заставить скрипт найти правильный файл XML, но почему-то мне не удалось заставить Powershell запускаться из командной строки, принимать скрипт в качестве аргумента и запускать его.

Затем я подумал о написании небольшого файла .exe, который запускает только сценарий Powershell, но возможно ли это вообще? Если это так, может ли кто-нибудь подтолкнуть меня в правильном направлении?


person tplive    schedule 05.06.2009    source источник
comment
Я думаю, вам нужно уточнить, что вы подразумеваете под не будет работать. Есть ли сообщение об ошибке? Что происходит, когда вы пытаетесь запустить его самостоятельно, скажем, через диалоговое окно «Выполнить»?   -  person zdan    schedule 05.06.2009


Ответы (2)


Powershell хочет иметь квалифицированный путь к файлам сценариев, прежде чем запускать их. Поэтому вам нужно либо использовать

powershell.exe .\myscript.ps1

если он находится в текущем рабочем каталоге (маловероятно и склонен к поломке для этого варианта использования), или используйте полный путь к скрипту:

powershell.exe C:\Users\Foo\Scripts\myscript.ps1

или похожие.

person Joey    schedule 05.06.2009
comment
Да, я знал об этом, но, похоже, мое приложение не справилось с этим. Я попробую еще раз, просто чтобы убедиться, но я почти уверен, что аргумент командной строки не был передан, когда я пошел по этому пути.... - person tplive; 05.06.2009

Вы также можете попробовать Powershell.exe -Command "& your-app.exe ${your-arguments}

person Carlos Nunez    schedule 19.09.2015