gpt4 book ai didi

Powershell脚本 - 如何捕获被调用的子进程退出代码

转载 作者:行者123 更新时间:2023-12-02 23:15:35 25 4
gpt4 key购买 nike

我正在尝试编写一个调用 .ftp 文件( www.scriptftp.com )的 powershell 脚本。当 Powershell 调用用于将 zip 文件上传到 ftp 服务器的 .ftp 脚本文件时

这是我的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 $?

在这里,我想获取由 .ftp 文件脚本返回的退出代码,所以我使用 $lastexitcode$?但他们都没有向我展示正确的结果。
是否有任何其他方式来获取子进程的退出代码,请建议我。

最佳答案

尝试使用 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

使用 Invoke-Expression(或直接启动 exe)的问题在于您正在启动 Windows 子系统 EXE,并且与控制台子系统 exe 不同,Invoke-Expression 将在 exe 启动后(以及退出之前)立即返回。 Invoke-Item 也会在 Windows EXE 退出之前返回。

关于Powershell脚本 - 如何捕获被调用的子进程退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com