Ошибка использования относительных путей в Alteryx при запуске через Powershell - PullRequest
0 голосов
/ 15 марта 2019

У меня есть скрипт Powershell, который вызывает аналитическое приложение Alteryx (мастер) и вводит в него один параметр с помощью .xml - метода, используемого для этого здесь .

Инструменты вывода в рабочем процессе Alteryx настроены как относительные пути для сохранения выходных данных в папках Input и Working , которые находятся на уровне выше самого приложения, например:

..\Input\FileName.yxdb

Если я открываю рабочий процесс Alteryx и запускаю его, или запускаю приложение через интерфейс, он работает абсолютно нормально, и мои результаты сохраняются правильно.Однако, если запустить его через Powershell с помощью кода,

$modules = "C:\Projects\2019\Modules"
cd $modules
AlteryxEngineCmd.exe .\Extract_Variables.yxwz .\_Version.xml

возвращает следующие ошибки:

Error - ToolId 5: Cannot access the folder .\Input\.
Error - ToolId 15: Cannot access the folder .\Working\.
Error - ToolId 24: Cannot access the folder .\Input\.
Error - ToolId 26: Cannot access the folder .\Input\.

, несмотря на то, что относительные пути работают нормально, если они запускаются непосредственно внутри рабочего процесса.Powershell нормально запустит рабочий процесс Alteryx, но не сможет сохранить выходные данные.

В качестве теста я переместил папки Input и Working на тот же уровень, что исамо приложение, и это работало нормально - файлы сохраняются в эти тестовые папки - так что, как будто Powershell не понимает две точки, обозначающие движение вверх по уровню.Фактически, я могу написать

..............\Input\FileName.yxdb

, и он все равно будет выводиться в тестовую папку ввода, которую я создал вместе с самим приложением Alteryx.Кто-нибудь знает, почему это так?

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Чтобы расширить мой комментарий с примером того, как выполнить ваше приложение с Start-Process.Во-первых, предположение о структуре файла:

- C:\Projects\2019
|-- Modules
    |-- AlteryxEngineCmd.exe
    |-- Extract_Variables.yxwz
    |-- _Version.xml
|-- Input
    |-- FileName.yxdb
|-- Working

И код:

$processParams = @{
    FilePath         = '.\Modules\AlteryxEngineCmd.exe'
    ArgumentList     = '.\Modules\Extract_Variables.yxwz', '.\Modules\_Version.xml'
    WorkingDirectory = 'C:\Projects\2019'
    NoNewWindow      = $true
    Wait             = $true
    PassThru         = $true
}
Start-Process @processParams

Примечание. Я использовал технику, называемую сплаттингом, для передачи всех параметров в Start-Process изhashtable для удобства чтения.

0 голосов
/ 18 марта 2019

Я нашел проблему, которая заключалась в простом неправильном понимании синтаксиса.Мой рабочий каталог выглядит следующим образом:

- C:\Projects\2019
|-- Modules
    |-- AlteryxEngineCmd.exe
    |-- Extract_Variables.yxwz
    |-- _Version.xml
|-- Input
    |-- FileName.yxdb
|-- Working

Затем мастер Alteryx нуждается в вызове в Powershell следующим образом:

$modules = "C:\Projects\2019\Modules"
cd $modules
AlteryxEngineCmd.exe Extract_Variables.yxwz _Version.xml

Обратите внимание, что нет необходимости в .\ при вызове wizrd иXML-файлИспользование .\ успешно вызовет модуль, но повлияет на относительные пути, установленные в нем.

...