我想检查最后一个命令的状态,并根据退出代码,命令将进一步执行.
最后一个命令执行:
$hiveJob = Start-AzureHDInsightJob -Cluster $clusterName -JobDefinition $hiveJobDefinition
Wait-AzureHDInsightJob -Job $hiveJob -WaitTimeoutInSeconds 5400
Get-AzureHDInsightJobOutput -Cluster $clusterName -JobId $hiveJob.JobId -StandardOutput
Run Code Online (Sandbox Code Playgroud)
输出是:
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
Run Code Online (Sandbox Code Playgroud)
现在,我只想在exitcode为零时执行更多命令.我如何if为这种情况写一份声明?
Ada*_*ski 26
你在谈论"退出代码".如果您的意思是$LastExitCode 自动变量,它只会在您调用Windows程序时填充,例如RAR:
$x=rar
$LastExitCode
Run Code Online (Sandbox Code Playgroud)
它将返回退出代码7(如果您安装了RAR).
但是,cmdlet不会填充此变量.您可以使用另一个自动变量$?:
$x=gci
$?
Run Code Online (Sandbox Code Playgroud)
它仅$True在命令成功完成或$False出现错误时给出.
来自获取帮助 about_If:
语法 以下示例显示 If 语句语法:
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Run Code Online (Sandbox Code Playgroud)
注意:elseif 和 else 两边的方括号表示它们是可选的。
将返回的对象分配给变量:
$hiveJob = Start-AzureHDInsightJob -Cluster $clusterName -JobDefinition $hiveJobDefinition
Wait-AzureHDInsightJob -Job $hiveJob -WaitTimeoutInSeconds 5400
$Result = Get-AzureHDInsightJobOutput -Cluster $clusterName -JobId $hiveJob.JobId -StandardOutput
Run Code Online (Sandbox Code Playgroud)
然后
if ($Result.ExitCode -eq 0)
{
#More commands
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34017 次 |
| 最近记录: |