You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure中使用PowerShell将诊断设置从一个资源复制到另一个资源

问题根因

你原有代码报错的核心原因是调用Set-AzDiagnosticSetting时仅传递了配置名称与目标资源ID,未传递诊断设置的核心配置项,缺少必填参数触发报错。

修复后完整代码
# 建议明确指定资源组与资源类型,避免同名资源匹配错误
$sourceRG = "你的源资源组名称"
$targetRG = "你的目标资源组名称"
$sqlDBResourceType = "Microsoft.Sql/servers/databases"

# 获取源资源
$sourceResource = Get-AzResource -Name "aaa-bbb-ccc-sql/TemplateJob" -ResourceGroupName $sourceRG -ResourceType $sqlDBResourceType
$sourceResourceId = $sourceResource.Id
Write-Output "源资源ID: $sourceResourceId"

# 获取源诊断设置
$diagnosticSetting = Get-AzDiagnosticSetting -ResourceId $sourceResourceId

# 获取目标资源
$targetResource = Get-AzResource -Name "aaa-bbb-ccc-sql/Test4" -ResourceGroupName $targetRG -ResourceType $sqlDBResourceType
$targetResourceId = $targetResource.Id
Write-Output "目标资源ID: $targetResourceId"

# 完整传递所有诊断配置项到目标资源
Set-AzDiagnosticSetting `
  -Name $diagnosticSetting.Name `
  -ResourceId $targetResourceId `
  -StorageAccountId $diagnosticSetting.StorageAccountId `
  -EventHubName $diagnosticSetting.EventHubName `
  -EventHubAuthorizationRuleId $diagnosticSetting.EventHubAuthorizationRuleId `
  -WorkspaceId $diagnosticSetting.WorkspaceId `
  -Log $diagnosticSetting.Logs `
  -Metric $diagnosticSetting.Metrics
注意事项
  • 执行前请确保你登录的Azure账号对源、目标资源,以及诊断配置关联的存储账户、事件中心、Log Analytics工作区有至少贡献者权限
  • 如果跨订阅复制,需要保证诊断配置关联的所有外部资源(存储/事件中心/LA工作区)和目标资源归属同一个Azure AD租户
  • 若执行仍然报错提示不支持的日志/指标类别,可以先调用Get-AzDiagnosticSettingCategory -ResourceId $targetResourceId获取目标资源支持的类别,过滤掉源配置中不被目标支持的类别后再执行设置操作

内容的提问来源于stack exchange,提问作者Toufic Makhoul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:45:03