1

PS バージョンを 3.0 にアップグレードしたところ、一部のスクリプトが機能しなくなりました。多くのデバッグを行った後、Start-Process コマンドに問題があることに気付きました。

基本的に、PowerShell コマンドで Start-Process を直接実行すると、正しい引数でプログラムが実行されます。ただし、スクリプトを実行すると、エラーは発生しませんが、プログラムは実行されません。

スクリプトは少し長いですが、失敗しているスニペットをテストする方法は次のとおりです。

$SERVER = 'servername'  
$PORT = 'xxxx' 
$TPath = 'E:\epicor\PowerShell\export\POAutomation\'                        
$User = 'username'
$Psw = 'password'
$Import = 'PO Combined'
$file = $TPath + 'AutomaticPOHeaders.csv' 
$DMTPATH = 'E:\epicor\Epicor905\Client\dmt.exe'


$Param = "-ArgumentList `'-user=`"$User`" -pass=`"$Psw`" -server=$SERVER -port=$PORT -import=`"$Import`" -source=`"$file`" -add=true -update=false -noui=true`'"
Start-Process $DMTPATH $Param -Wait
"Finished"

$Param 文字列の形式が正しいかどうか、および Start-Process コマンドも適切に記述されているかどうかを確認するために、ログ ファイルに書き込みさえしました。ログ ファイルの文字列をコピーして PS コマンド ラインに貼り付けると、正常に実行されます。

私はこれで4時間以上立ち往生しています。

前もって感謝します。

4

2 に答える 2

0

私は同じ問題に遭遇します。-noui=true を削除すると、うまくいくようです。

于 2014-10-30T11:16:57.113 に答える
0

dmt が何を待っているのかわかりませんが、このコマンドは ps V3 で正常に実行されます。引数リストのパラメータについてよろしいですか? そしてあなたの引用符を台無しにしているようです

わずかな変更: DMT の代わりに echoargs.exe を使用し、新しいウィンドウを開かないようにスイッチを追加します。

$DMTPATH = 'echoargs.exe'
$Param = "-ArgumentList `'-user=`"$User`" -pass=`"$Psw`" -server=$SERVER -port=$PORT -import=`"$Import`" -source=`"$file`" -add=true -update=false -noui=true`'"
Start-Process -nonewwindow $DMTPATH $Param -Wait
"Finished"

結果 :

Arg 0 is <-ArgumentList>                                                                                                                                                                     
Arg 1 is <'-user=username>                                                                                                                                                                   
Arg 2 is <-pass=password>                                                                                                                                                                    
Arg 3 is <-server=servername>                                                                                                                                                                
Arg 4 is <-port=xxxx>                                                                                                                                                                        
Arg 5 is <-import=PO Combined>                                                                                                                                                               
Arg 6 is <-source=E:\epicor\PowerShell\export\POAutomation\AutomaticPOHeaders.csv>                                                                                                           
Arg 7 is <-add=true>                                                                                                                                                                         
Arg 8 is <-update=false>                                                                                                                                                                     
Arg 9 is <-noui=true'>                                                                                                                                                                       

Command line:                                                                                                                                                                                
"C:\Windows\EchoArgs.exe" -ArgumentList '-user="username" -pass="password" -server=servername -port=xxxx -import="PO Combined" -source="E:\epicor\PowerShell\export\POAutomation\AutomaticPOH
aders.csv" -add=true -update=false -noui=true'                                                                                                                                               

Finished   

cmd.exe から dmt を起動してみてください。何かのようなもの :

$p=@("/C";"dmt.exe";"-user'test'" ....)
Start-Process -NoNewWindow cmd.exe $p 
于 2014-04-10T09:08:07.523 に答える