我想看看能否在错误代码上获得一些帮助。我的最后一个脚本是为邮箱设置一个SMTP地址,但我只是以下面的代码为例。
Set-Mailbox jsmith -AntispamBypassEnabled $false
if ($LastExitCode -eq 1)
{
echo "Exit Code 1" $lastexitcode
}
else
{
echo "Exit Code 0" $lastexitcode
}
我的期望是,我第一次运行命令时,它完成了工作并获得了成功的错误代码。第二次运行命令时,powershell会返回以下内容。
Warning: The command completed successfully but no settings have been modified.
我希望能够获得3种情况的错误代码。 (它有效,它失败了,然后上面的那个它起作用,但没有做出任何改变。)我似乎无法找到任何这方面的例子,并且非常感谢一些建议。
感谢。
迈克尔
好的,我得到了很好的回复,现在我正在使用以下代码。我必须修改数千个对象,它们都将处于不同的错误代码,因此我需要能够将任何条件写入日志文件。我在整个脚本中都有一堆环境变量,所以最后,我要把“用户通过/失败”$ EmailAddress $ DisplayName等.....
Try { Set-Mailbox jsmith -AntispamBypassEnabled $false -ErrorAction Stop - WarningVariable Warn }
Catch { Exit 2 } Write-Host "Exit Code 2"
if ($Warn) { Exit 1 } Write-Host "Exit Code 1"
else { Exit 0 } Write-Host "Exit Code 0"
答案 0 :(得分:8)
$?
包含上次操作的执行状态。它包含 如果上一次操作成功则为TRUE,如果失败则为FALSE。
你也可以清除$ Error,例如$ Error.Clear()然后检查$ Error [0]的值,看看你的命令运行后是否填充了它。
答案 1 :(得分:3)
试试这个。它应该在成功时退出0,如果成功则退出但没有更改,如果失败则退出:
Try { Set-Mailbox jsmith -AntispamBypassEnabled $false -ErrorAction Stop -WarningVariable Warn }
Catch { Exit 2 }
if ($Warn) { Exit 1 }
else { Exit 0 }