我想看看我是否可以在错误代码上获得一些帮助.我的最后一个脚本是为邮箱设置一个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种情况的错误代码.(它有效,它失败了,然后上面的那个它起作用,但没有做出任何改变.)我似乎无法找到任何这方面的例子,并且非常感谢一些建议.
谢谢.
迈克尔
好的,我收到了很好的回复,现在我正在使用以下代码.我必须修改数千个对象,它们都将处于不同的错误代码,因此我需要能够将任何条件写入日志文件.我在整个脚本中都有一堆环境变量,所以最后,我要把"User Passed/Failed"$ 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"
tommymaynard.. 10
$ LastExitCode与Win32应用程序的退出代码有关,而与PowerShell cmdlet无关.你可能最好检查$?无论是对还是对.$?变量可以报告Win32应用程序和PowerShell cmdlet.以下是Get-Help about_Automatic_Variables中的文字:
$?
包含上次操作的执行状态.如果上一次操作成功,则包含TRUE;如果失败,则包含FALSE.
您还可以清除$ Error,例如$ Error.Clear(),然后检查$ Error [0]的值,看看在命令运行后是否填充了它.
$ LastExitCode与Win32应用程序的退出代码有关,而与PowerShell cmdlet无关.你可能最好检查$?无论是对还是对.$?变量可以报告Win32应用程序和PowerShell cmdlet.以下是Get-Help about_Automatic_Variables中的文字:
$?
包含上次操作的执行状态.如果上一次操作成功,则包含TRUE;如果失败,则包含FALSE.
您还可以清除$ Error,例如$ Error.Clear(),然后检查$ Error [0]的值,看看在命令运行后是否填充了它.