2017-05-30 85 views
1

我可以退出的,退出代码PowerShell的应用程序:PowerShell的自定义退出码说明

exit 59 

如何使用自定义退出码说明退出?

exit 59, "Somethings Wrong" 
+0

为什么不使用'Write-Host'后跟一个退出码?代码在上面发布的方式不正确,'exit'后面跟着一个数字代码来表示退出代码。 – t0mm13b

+0

这就是我目前正在做的事情。我希望有退出时退出代码描述而不是在退出 – ArcSet

+0

之前发送退出代码描述没有“定制退出代码描述”这样的事情。退出代码是一个整数。 –

回答

4

你不能。在PowerShell环境中,cmdlet可以将任何.Net对象(字符串,异常等)返回给对方,但是当您exit时,PowerShell进程退出,并且它可以返回到Windows /调用进程的一个整数。

https://en.wikipedia.org/wiki/Exit_status#Windows

有无处放一个自定义的描述,并没有办法让别人任何东西得到说明。这是传统计算和向后兼容性约束的几年,当处理器很小,内存昂贵,并且返回值是(我推测)一个处理器寄存器值或类似的。

当你在命令提示符,运行以下命令:

c:\> powershell 
Windows PowerShell 
Copyright (C) 2014 Microsoft Corporation. All rights reserved. 

PS C:\> exit 10 

c:\> echo %ERRORLEVEL% 
10 

看到PowerShell进程退出与10的返回值,但没有%ERRORDESCRIPTION%或类似的标准功能,把其他东西。对于你想要做的事情,没有更低级别的机器。

您可以使用Write-Error写入标准错误输出(stderr),如果程序调用脚本并捕获stderr输出,它可以读取它。或者您可以将错误写入事件日志或日志文件。

但是,任何写作都必须在您的流程运行时发生,因为在流程退出后您无法执行任何操作。

+1

根据错误首选项,write-error不会终止脚本的执行。我应该在这里提到'throw'。 '写错误“这个”;“你好”''''扔这个“;”你好“' – Matt