0

複数のサーバーに Alteryx があり、Alteryx API ではなく、コマンド ラインまたは PowerShell からリモートでジョブを実行できるようにしたいと考えています。

私は何年もの間、コマンドラインからローカルでalteryxフローを実行し、ローカルでpowershellを実行してきましたが、現在、複数のサーバーで特定のフローをこの方法で実行する必要がありますが、反応するWebアプリからトリガーする必要があります。私たちは API を試してみましたが、うまくいきましたが、ジョブが長時間キューに入れられることが多く、ほぼリアルタイムの応答が必要であり、これらのジョブは数秒で実行されます。私たちの解決策は、Alteryx API の外部でトリガーして、リソースが余っているワーカー ノードですぐに実行することです。

私たちの問題は、ローカルで実行するとうまく動作するスクリプトをテストすると、alteryxenginecmd.exe プログラムの実行を除いて、他のすべてのコマンドが正常に実行されることです。

パススルーで Start-Process を使用すると、プロセスが生成されますが、alteryx ジョブからの出力はなく、エラーも検出されません。Call operator & if を使用すると、ワークフローが見つからないと言って失敗するため、alteryxenginecmd.exe は起動しますが、パラメーターとして実行するフローの完全なパスを読み取ったり受け取ったりしません。しかし、ローカルでは問題なく動作します。資格情報を使用してサインオンを強制し、資格情報の問題を解決しましたが、結果は変わりませんでした。

Powershellにはいくつかの奇妙な点があることを知っています。スクリプトがリモートサーバーから実行される場合、コマンドを指定する方法に微調整があるのではないでしょうか?

これは、リモート サーバーから実行したいスクリプトであり、示されている 4 つのシナリオのいずれでも正常に動作します。

    $rundate = (Get-Date -format 'u') -replace "-",""  -replace ":","" -replace " ","-"
    $Pgm2Run = "\<somepath>\RunScriptRemote\RunRemoteTest2 - NoDB.yxmd"
    $Bat2Run = "\\<somepath>\RunScriptRemote\RunRemoteTestJob.bat"
    $JobLogFile = "\<somepath>\RunScriptRemote\LogsJob\JobTranscript $rundate.txt"
    $ScriptLogFile = "\<somepath>\RunScriptRemote\LogsScript\RunJobTranscript $rundate.txt"
    Start-Transcript  -Path $ScriptLogFile 
    echo "  "
    echo "$rundate Start --> "
    Echo "$rundate Before Start-Process"
    #1  Start-Process -filepath "AlteryxEngineCmd.exe" -ArgumentList `"$Pgm2Run`" -RedirectStandardOutput $JobLogFile  -Wait -PassThru  
    #2  Start-Process -filepath $Bat2Run   -RedirectStandardOutput $JobLogFile  -Wait -PassThru 
    #3  & AlteryxEngineCmd.exe "$Pgm2Run"
    AlteryxEngineCmd.exe "$Pgm2Run"
    echo "$rundate After Start-Process"
    echo "$rundate End --> " 
    Stop-Transcript 

このコマンドは Server1 で実行され、server2 で上記のスクリプトを実行します。

    Invoke-Command -ComputerName server2 -FilePath "\\<somepath>\RunScriptRemote\RunAlteryxAndLogIt.ps1"

そして、これは結果です:

20200831-094309Z Before Start-Process
AlteryxEngineCmd.exe Version 2019.4.8.22007 © Alteryx, Inc. - All Rights Reserved.
Started running \\<somepath>\RunRemoteTest2 - NoDB.yxmd
Error - Alteryx Engine: Can't read the file "
Invoke-Command -ComputerName server2 -FilePath "\\<somepath>\RunScriptRemote\RunRemoteTest2 - NoDB.yxmd"
Finished in 0.020 seconds with 1 error
20200831-094309Z After Start-Process

問題がその1つのexeを適切に実行しているように見えるため、それがAlteryxのものである可能性があります。スクリプトはリモートサーバーから適切にトリガーされ、他のコマンドをテストしてすべて機能しました。同じスクリプトをローカルで実行するとローカルで正常に動作しますが、リモートで実行すると、このexeを実行するコマンドが動作しないようです。これは、別のスクリプトを実行するスクリプト間の障壁のようなものです。

別のサーバーからexeをリモートで実行することに精通しているpowershellの専門家はいますか?

4

0 に答える 0