2017-05-30 88 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