Azure 更新管理以 csv 格式生成补丁状态报告
Azure update management generate patch status report in a csv format
我正在创建 Azure Automation Runbook 以生成有关管理组下虚拟机补丁状态的报告。
使用的查询如下
联合更新,工作区('xxxx').操作,工作区('yyyy').操作
|其中 TimeGenerated > ago(10d)
|其中分类(“安全更新”、“关键更新”、“关键和安全更新”)和 ResourceType ==“virtualMachines”
|按计算机、分类、更新状态、产品、发布日期、MSRCSeverity 总结更新=makeset(标题)
|按更新状态排序
$result = Invoke-AzOperationalInsightsQuery -WorkspaceId $WorkspaceID -Query $query
这里我需要从同一管理组下的不同订阅查询日志分析工作区..
运行 由于帐户在管理组级别将 RBAC 设置为“Log Analytics Reader”。
但是查询结果是空记录集,当它直接在 Log Analytics 工作区上执行时,相同的查询会获取记录。
任何关于我在这里遗漏的指导都会很有帮助。
谢谢
这个命令 Invoke-AzOperationalInsightsQuery
只能对一个订阅进行操作,所以在你的情况下,你需要使用一个循环来设置订阅 Set-AzContext -Subscription <subscription-id>
,以获取你的 RunAs 帐户的所有订阅可以访问,使用Get-AzSubscription
.
样本:
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Azure..."
Connect-AzAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$query = "xxxxxx"
$subs = Get-AzSubscription
foreach($sub in $subs){
Set-AzContext -Subscription $sub.Id
#do the things you want e.g. $result = Invoke-AzOperationalInsightsQuery -WorkspaceId $WorkspaceID -Query $query
}
这只是一个示例,要使其正常工作,还记得在脚本中循环不同的 $WorkspaceID
。
我正在创建 Azure Automation Runbook 以生成有关管理组下虚拟机补丁状态的报告。
使用的查询如下
联合更新,工作区('xxxx').操作,工作区('yyyy').操作
|其中 TimeGenerated > ago(10d)
|其中分类(“安全更新”、“关键更新”、“关键和安全更新”)和 ResourceType ==“virtualMachines”
|按计算机、分类、更新状态、产品、发布日期、MSRCSeverity 总结更新=makeset(标题)
|按更新状态排序
$result = Invoke-AzOperationalInsightsQuery -WorkspaceId $WorkspaceID -Query $query
这里我需要从同一管理组下的不同订阅查询日志分析工作区.. 运行 由于帐户在管理组级别将 RBAC 设置为“Log Analytics Reader”。 但是查询结果是空记录集,当它直接在 Log Analytics 工作区上执行时,相同的查询会获取记录。
任何关于我在这里遗漏的指导都会很有帮助。 谢谢
这个命令 Invoke-AzOperationalInsightsQuery
只能对一个订阅进行操作,所以在你的情况下,你需要使用一个循环来设置订阅 Set-AzContext -Subscription <subscription-id>
,以获取你的 RunAs 帐户的所有订阅可以访问,使用Get-AzSubscription
.
样本:
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Azure..."
Connect-AzAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$query = "xxxxxx"
$subs = Get-AzSubscription
foreach($sub in $subs){
Set-AzContext -Subscription $sub.Id
#do the things you want e.g. $result = Invoke-AzOperationalInsightsQuery -WorkspaceId $WorkspaceID -Query $query
}
这只是一个示例,要使其正常工作,还记得在脚本中循环不同的 $WorkspaceID
。