通过Powershell运行时在Alteryx中使用相对路径时出错

时间:2019-03-15 14:42:49

标签: powershell cmd alteryx

我有一个Powershell脚本,该脚本调用Alteryx解析应用程序(向导)并通过.xml向其中输入一个参数-用于执行此操作的方法是here

Alteryx工作流程中的输出工具被设置为相对路径,以将输出存储到应用程序本身上方的 Input Working 文件夹,例如:< / p>

..\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应用程序本身一起创建的test Input文件夹中。有人知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

举例说明如何使用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

注意:我使用了一种称为splatting的技术来将所有参数从Start-Process传递到hashtable,以提高可读性。

答案 1 :(得分:0)

我发现了这个问题,这是对语法的简单误解。我的工作目录如下:

- 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文件时不需要.\。使用.\将成功调用该模块,但会影响其中设置的相对路径。