2012-09-04 52 views
2

我想寫一個調用.ftp文件(www.scriptftp.com)的powershell腳本。當PowerShell的調用.ftp腳本文件,它是用來上傳一個zip文件到FTP服務器Powershell腳本 - 如何捕獲被稱爲子進程退出代碼

這裏是我的upload.ftp文件代碼

OPENHOST("www.abcd.in","sdfdsfs","pwd") 
CHDIR("/dirctory/from/user/") 

$result=PUTFILE("D:\MyZipTest.zip") 

IF($result!="OK") 
    PRINT("ERROR in GetFile, exiting") 
    # Exit with error code 1 
    EXIT(1) 
ELSE 
    EXIT() 
    PRINT("File uploaded successfuly") 
END IF 

CLOSEHOST 

在上面的代碼我返回EXIT(1)EXIT(0)調用方法,即PowerShell腳本文件

我PowerShell腳本文件代碼:

Invoke-Item "D:\USER\Raj\BLACKswastik DEV\FTPScript\Upload1.ftp" 

Start-Sleep -Second 15 

echo $lastexitcode 

echo $? 

在這裏,我想獲取EXI t代碼,通過.ftp文件腳本返回,所以我使用$lastexitcode$?,但它們都沒有顯示出正確的結果。 是否有任何其他方式獲取子進程的退出代碼請給我建議。的

Invoke-Item "D:\User\...\Upload1.ftp" 

回答

4

+0

偉大的..它的工作......感謝基思山。 – user1619672

0

使用

Invoke-Expression -Command "D:\User\...\Upload1.ftp" 

,而不是嘗試使用Start-Process。你可以得到一個Process對象,您可以稍後查詢的退出代碼如:

$ftpPath = "D:\USER\Raj\BLACKswastik DEV\FTPScript\Upload1.ftp" 
$p = Start-Process <path_to_scriptftp.exe> -Wait -PassThru -ArgumentList $ftpPath 
$p.ExitCode 

使用調用表達式(或直接啓動EXE)的問題是,你推出一個Windows子系統和EXE與控制檯子系統exe不同,Invoke-Expression將在exe啓動後(及退出之前)立即返回。 Invoke-Item也會在Windows EXE退出之前返回。

相關問題