通过Powershell从Azure RM作业获取作业输入参数

时间:2016-02-11 16:27:29

标签: powershell azure azure-resource-manager

在我们使用AzureRM进行压力测试,配置和删除大块虚拟机时,我们注意到我们在配置和删除Runbook上遇到了一些奇怪的错误。我们希望有一个进程找到这些失败的作业并重新排队。为此,我们需要知道作业的输入参数。但是,当我们运行时

Get-AzureRmAutomationJob -AutomationAccountName $aa.AutomationAccountName -RunbookName "Delete-AzureRmVm" -StartTime $then -Status "Failed" -ResourceGroupName $rg.ResourceGroupName

所有作业显示jobParameters的计数为0。

以下是一些示例代码:

<code to get assets>
$suspended = Get-AzureRmAutomationJob -AutomationAccountName $aa.AutomationAccountName -RunbookName "Delete-AzureRmVm" -StartTime $then -Status "Suspended" -ResourceGroupName $rg.ResourceGroupName
$failed = Get-AzureRmAutomationJob -AutomationAccountName $aa.AutomationAccountName -RunbookName "Delete-AzureRmVm" -StartTime $then -Status "Failed" -ResourceGroupName $rg.ResourceGroupName
$completed = Get-AzureRmAutomationJob -AutomationAccountName $aa.AutomationAccountName -RunbookName "Delete-AzureRmVm" -StartTime $then -Status Completed -ResourceGroupName $rg.ResourceGroupName

foreach($job in $completed)
{
    Write-Output " "
    $job
    Write-Output " "
    $jobId = $job.JobId.Guid.ToString()
    Write-Output "Job Parameters for $jobId"
    #Get-AzureRmAutomationJobOutput -Id $job.JobId -Stream Any -ResourceGroupName $rg.ResourceGroupName -AutomationAccountName $aa.AutomationAccountName -Verbose
    foreach($jobParameter in $job.JobParameters)
    {
        $jobParameter
        break
    }
}

输出结果为:

ResourceGroupName      : <valid RGN>
AutomationAccountName  : <valid AAN>
JobId                  : 2b5fdc91-c87b-4704-9b12-91d2365eaa95
CreationTime           : 2/10/2016 5:19:38 PM -05:00
Status                 : Completed
StatusDetails          : 
StartTime              : 2/10/2016 5:19:42 PM -05:00
EndTime                : 2/10/2016 5:43:25 PM -05:00
Exception              : 
LastModifiedTime       : 2/10/2016 5:43:25 PM -05:00
LastStatusModifiedTime : 1/1/0001 12:00:00 AM +00:00
JobParameters          : {}
RunbookName            : Delete-AzureRmVm
HybridWorker           : 
StartedBy              : 


Job Parameters for 2b5fdc91-c87b-4704-9b12-91d2365eaa95

我们做错了什么,我们没有看到输入参数?无论作业状态如何,所有作业都显示0个作业参数。在AzureRM门户中查看相同的作业时,我们可以看到以下参数:

  • MICROSOFTAPPLICATIONMANAGEMENTSTARTEDBY =&#34; PowerShell&#34;
  • VMNAME =&#34; azrdevvmn125&#34;

所以我们知道输入参数在那里,而不是如何通过PowerShell获取它们。我们非常感谢您提供的任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

仅当指定了作业ID参数并且结果中只有一个作业调用时,

49px才会返回Get-AzureRmAutomationJob个集合。你可以在foreach循环中尝试这样的东西:

JobParameters

$jobDetails = Get-AzureRmAutomationJob -AutomationAccountName $aa.AutomationAccountName -ResourceGroupName $rg.ResourceGroupName -Id $job.Id 变量应填充$jobDetails属性。