user3863725
user3863725

Reputation: 467

Checking exit code of last command using "if" statement

I want to check the status of last command and based on the exit code, the commands will be executed further.

The last command execute was:

$hiveJob = Start-AzureHDInsightJob -Cluster $clusterName -JobDefinition  $hiveJobDefinition
Wait-AzureHDInsightJob -Job $hiveJob -WaitTimeoutInSeconds 5400
Get-AzureHDInsightJobOutput -Cluster $clusterName -JobId $hiveJob.JobId -StandardOutput

The output is:

Cluster         : crmhdinsight  
ExitCode        : 0  
Name            : Hive: show tables;  
PercentComplete :   
Query           : show tables;  
State           : Completed  
StatusDirectory : 7dc4b67f-99a9-4c6b-a9f3-ffe8b4e29c7e  
SubmissionTime  : 7/28/2014 11:44:04  
AMJobId         : job_1406103802152_0053  

Now, I want to execute further commands only if the exitcode is zero. How do I write an if statement for this condition?

Upvotes: 45

Views: 90462

Answers (2)

mjolinor
mjolinor

Reputation: 68243

From Get-Help about_If:

Syntax The following example shows the If statement syntax:

   if (<test1>)
       {<statement list 1>}
   [elseif (<test2>)
       {<statement list 2>}]
   [else
       {<statement list 3>}]

Note: the square brackets around the elseif and else indicate they are optional.

Assign your returned object to a variable:

$hiveJob = Start-AzureHDInsightJob -Cluster $clusterName -JobDefinition  $hiveJobDefinition
Wait-AzureHDInsightJob -Job $hiveJob -WaitTimeoutInSeconds 5400
$Result = Get-AzureHDInsightJobOutput -Cluster $clusterName -JobId $hiveJob.JobId -StandardOutput

Then

if ($Result.ExitCode -eq 0)
  {
    #More commands
  }

Upvotes: 6

AdamL
AdamL

Reputation: 13141

You're talking about "exit code". If you mean $LastExitCode automatic variable, it is only populated when you call windows program, RAR for example:

$x=rar
$LastExitCode

It will return exit code 7 (if you have RAR installed).

cmdlets, however, don't fill this variable. You can use another automatic variable $? for this:

$x=gci
$?

It only gives $True if command completed successfully or $False if there was an error.

Upvotes: 73

Related Questions