2014-04-10 59 views
1

我將PS版本升級到3.0,我們的一些腳本停止工作。經過大量調試後,我意識到啓動過程命令存在問題。PowerShell 3.0腳本中的啓動過程不起作用,但它在2.0中工作

基本上,當我直接在PowerShell cmd中運行啓動進程時,它會使用正確的參數運行程序。但是,當我運行該腳本時,它不會給出任何錯誤,但該程序將不會運行。

該腳本有點長,但這是我可以測試失敗片段的方式。

$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" 

我甚至寫了一個日誌文件,以檢查是否$帕拉姆字符串以及形成,如果開始處理指令也寫得很好。當我將日誌文件中的字符串複製粘貼到PS命令行時,它們成功運行。

我一直堅持這超過4個小時了。

在此先感謝。

回答

0

我不知道dmt正在等待什麼,但是這個命令在ps V3上成功運行。 你確定你參數列表參數?似乎是一個混亂與您的報價

的細微變化:使用echoargs.exe代替DMT和添加交換機不打開一個新窗口:

$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嗎?如:

[email protected]("/C";"dmt.exe";"-user'test'" ....) 
Start-Process -NoNewWindow cmd.exe $p 
+0

DMT是一個將數據導入我們ERP系統的應用程序。它正在等待,因爲它首先需要導入採購訂單標題,然後它將分別導入它們的行。我相信$ Param字符串是正確組成的,因爲我創建的日誌文件顯示它正確:啓動進程E:\ epicor \ Epicor905 \ Client \ dmt.exe -ArgumentList'-user =「dmt」-pass =「dmtUser」 - server = FIESP-MARS -port = 9401 -import =「PO Combined」-source =「E:\ epicor \ PowerShell \ export \ POAutomation \ AutomaticPOHeaders.csv」-add = true -update = false -noui = true'-Wait 。 – Sandra

+0

我的意思是什麼語法的輸入參數dmt正在等待... –

+1

如果我直接在PS命令行中使用啓動進程,它可以工作,但是從腳本運行時它不會。 – Sandra

0

我遇到了同樣的問題。我注意到如果-noui = true被刪除,它似乎工作。

+0

謝謝,我會試試這個。 – Sandra

相關問題