我正在创建一个Azure Automation runbook,以生成关于管理组下虚拟机的补丁状态的报告。
使用的查询如下
union Update,workspace(' xxxx'). operation,workspace('yyyy')。Operation
| where TimeGenerated>前(10 d)分类在("安全更新"、"关键更新"、"关键和安全更新")和ResourceType =="虚拟机";汇总更新=按计算机、分类、更新属性、产品、发布日期、MSRCSeverity排序的makesset(标题)| order by UpdateState
$result = Invoke-AzOperationalInsightsQuery -WorkspaceId $WorkspaceID -Query $query
这里我需要从相同管理组下的不同订阅查询日志分析工作区。作为账户运行,RBAC设置为"日志分析阅读器";在管理团队层面。但是查询结果是空记录集,相同的查询直接在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
。