Reputation: 467
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
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
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