azure 如何将Kusto Query输出解析为自动化脚本(Powershell或Python)

hts6caw3  于 2022-12-19  发布在  Shell
关注(0)|答案(2)|浏览(176)

我有一个Kusto查询,它将为我输出VM中的进程(无论它们是否停止)。
下面是查询:

ConfigurationData 
| project Computer, SvcName, SvcDisplayName, SvcState, TimeGenerated, _ResourceId
| distinct Computer, SvcName, SvcDisplayName, SvcState, TimeGenerated , _ResourceId
| where SvcName =~ "{process_name}" 
| where SvcState != "Running"

我需要将ComputerName(计算机)解析为一个自动化脚本,这样它就可以简单地打开没有运行的进程。
我怎样才能做到这一点?
直接在自动化脚本中运行KQL代码是否更明智?但是,我如何触发它呢?它需要每5分钟检查一次进程是否正在运行。我想我可以做一个调度任务。
我仍在尝试将KQL输出解析为自动化脚本的方法

bvn4nwqk

bvn4nwqk1#

我将从修复KQL查询开始。
它不是检索当前未运行的服务,而是检索在某个时间点未运行的服务。
您应该检索每个服务(在特定计算机上运行)的最后一条记录。

ConfigurationData 
| where SvcName =~ "{process_name}" 
| project Computer, SvcDisplayName, SvcState, TimeGenerated, _ResourceId
| summarize arg_max(TimeGenerated, *) by Computer
| where SvcState != "Running"
hfyxw5xn

hfyxw5xn2#

一种方法是使用Kusto查询,另一种方法是使用PowerShell命令,如下所示,我遵循SO-thread

$vm = Get-Azvm -Status

foreach($emos in $vm)
{
   $sc = Get-AzVM -ResourceGroupName $emos.ResourceGroupName -Name $emos.Name -Status 
    if($sc.Statuses.DisplayStatus[1] -eq "VM running")
    {
Write-Output "Already started" + $emos
    }
else{
Write-Output "Started now" + $emos
Start-AzVM -ResourceGroupName $emos.ResourceGroupName -Name $emos.Name
}

在运行手册中创建上述作业后,您可以在自动化中计划重复,如下所示:

或者你可以在Azure PowerShell函数中使用上面的PowerShell脚本,之后你可以使用计时器触发器函数。

相关问题