如何使用 PowerShell 将 Azure 数据工厂诊断设置更改为 "Resource specific" table
How to change Azure Data Factory Diagnostics Setting to "Resource specific" table using PowerShell
在 Azure 数据工厂中,我想使用 PowerShell 将诊断设置更改为“资源特定”目标 table。我有将日志发送到“Azure Diagnostics”tables 的现有设置。我想使用 PowerShell 更改此默认设置并避免再次部署完整的诊断设置。
您可以使用下面的命令,在我的示例中,joyfactory
是我的数据工厂名称,joyfactorydia
是诊断设置名称,将它们替换为 <subscription-id>
和 <group-name>
在命令中。
还要确保你的Az.Accounts
powershell模块不是太旧,至少有新命令Invoke-AzRestMethod
,如果是旧的,你可以使用Update-Module -Name Az.Accounts
更新它。
Invoke-AzRestMethod -Method PUT -Path "/subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.DataFactory/factories/joyfactory/providers/microsoft.insights/diagnosticSettings/joyfactorydia?api-version=2017-05-01-preview" `
-Payload '{
"id": "/subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.DataFactory/factories/joyfactory/providers/microsoft.insights/diagnosticSettings/joyfactorydia",
"name": "joyfactorydia",
"properties": {
"logs": [{
"category": "ActivityRuns",
"enabled": true,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "PipelineRuns",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "TriggerRuns",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageEventMessages",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageExecutableStatistics",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageEventMessageContext",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageExecutionComponentPhases",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageExecutionDataStatistics",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISIntegrationRuntimeLogs",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}],
"metrics": [{
"enabled": true,
"retentionPolicy": {
"days": 0,
"enabled": false
},
"category": "AllMetrics"
}],
"workspaceId": "/subscriptions/<subscription-id>/resourcegroups/<group-name>/providers/microsoft.operationalinsights/workspaces/joylogana",
"logAnalyticsDestinationType": "Dedicated"
}
}'
在Payload
中,"logAnalyticsDestinationType": "Dedicated"
就是你想要的,它把Destination table
改成了Resource specific
。其他值可以参考下面命令的结果,然后按照上面Payload
中的格式修复。
$id = (Get-AzDataFactoryV2 -ResourceGroupName <group-name> -Name joyfactory).DataFactoryId
Get-AzDiagnosticSetting -Name joyfactorydia -ResourceId $id
除了,我也试过Set-AzDiagnosticSetting
和Set-AzResource
,都不行,可能有一些bug,这里就不详细写了。
如果您可以接受使用 Azure CLI,最简单的方法是:
$id = (Get-AzDataFactoryV2 -ResourceGroupName <group-name> -Name joyfactory).DataFactoryId
$dia = Get-AzDiagnosticSetting -Name joyfactorydia -ResourceId $id
az resource update --ids $dia.Id --api-version '2017-05-01-preview' --set properties.logAnalyticsDestinationType=Dedicated
在 Azure 数据工厂中,我想使用 PowerShell 将诊断设置更改为“资源特定”目标 table。我有将日志发送到“Azure Diagnostics”tables 的现有设置。我想使用 PowerShell 更改此默认设置并避免再次部署完整的诊断设置。
您可以使用下面的命令,在我的示例中,joyfactory
是我的数据工厂名称,joyfactorydia
是诊断设置名称,将它们替换为 <subscription-id>
和 <group-name>
在命令中。
还要确保你的Az.Accounts
powershell模块不是太旧,至少有新命令Invoke-AzRestMethod
,如果是旧的,你可以使用Update-Module -Name Az.Accounts
更新它。
Invoke-AzRestMethod -Method PUT -Path "/subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.DataFactory/factories/joyfactory/providers/microsoft.insights/diagnosticSettings/joyfactorydia?api-version=2017-05-01-preview" `
-Payload '{
"id": "/subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.DataFactory/factories/joyfactory/providers/microsoft.insights/diagnosticSettings/joyfactorydia",
"name": "joyfactorydia",
"properties": {
"logs": [{
"category": "ActivityRuns",
"enabled": true,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "PipelineRuns",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "TriggerRuns",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageEventMessages",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageExecutableStatistics",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageEventMessageContext",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageExecutionComponentPhases",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISPackageExecutionDataStatistics",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}, {
"category": "SSISIntegrationRuntimeLogs",
"enabled": false,
"retentionPolicy": {
"days": 0,
"enabled": false
}
}],
"metrics": [{
"enabled": true,
"retentionPolicy": {
"days": 0,
"enabled": false
},
"category": "AllMetrics"
}],
"workspaceId": "/subscriptions/<subscription-id>/resourcegroups/<group-name>/providers/microsoft.operationalinsights/workspaces/joylogana",
"logAnalyticsDestinationType": "Dedicated"
}
}'
在Payload
中,"logAnalyticsDestinationType": "Dedicated"
就是你想要的,它把Destination table
改成了Resource specific
。其他值可以参考下面命令的结果,然后按照上面Payload
中的格式修复。
$id = (Get-AzDataFactoryV2 -ResourceGroupName <group-name> -Name joyfactory).DataFactoryId
Get-AzDiagnosticSetting -Name joyfactorydia -ResourceId $id
除了,我也试过Set-AzDiagnosticSetting
和Set-AzResource
,都不行,可能有一些bug,这里就不详细写了。
如果您可以接受使用 Azure CLI,最简单的方法是:
$id = (Get-AzDataFactoryV2 -ResourceGroupName <group-name> -Name joyfactory).DataFactoryId
$dia = Get-AzDiagnosticSetting -Name joyfactorydia -ResourceId $id
az resource update --ids $dia.Id --api-version '2017-05-01-preview' --set properties.logAnalyticsDestinationType=Dedicated