[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创教程] PowerShell 技能连载 - 理解 exit 语句

PowerShell 支持基于作用域的 exit 关键字。它的工作方式也许和您想象的很不一样。

我们假设有这样一个函数:

function test
{
  'A'
  exit
  'B'
}
当您将这个函数保存为一个脚本文件,然后执行这个脚本,将得到以下结果:

PS> C:\Users\Tobias\Documents\PowerShell\test12343.ps1
A
这意味着 exit 使函数提前退出。然而,当您没有保存该脚本,或当您以交互式的方式调用该函数,您的整个 PowerShell 宿主将会关闭。

exit 将会导致调用者上下文退出,而不仅仅是所在的函数。所以如果您将脚本像这样保存,您也许会有意外发现:

function test
{
  'A'
  exit
  'B'
}

'Start'
test
'Stop'
现在的结果类似这样:

PS> C:\Users\Tobias\Documents\PowerShell\test12343.ps1
Start
A
如您所见,“Stop”语句不再能执行到。exit 使得函数和调用者作用域都退出了。这是为什么您以交互式执行该函数会导致您的 PowerShell 被关闭的原因(因为此时您的调用者作用域是宿主本身)。

那么 exit 应该怎么使用?当脚本执行结束的时候您可以用它来设置错误等级(error level)。该错误等级可以被调用者读取,所以如果您通过计划任务启动一个 PowerShell 脚本,或者用批处理文件通过 powershell.exe 来启动它,那么您通过 exit 指定的数值将会作为脚本的返回值,并赋值给批处理文件的 %ERRORLEVEL% 变量。

返回列表