BrownField/Auto-assessment/scripts/Test-AVS-DiagSetting.ps1 (41 lines of code) (raw):
function Test-AVS-DiagSetting {
param (
[SecureString]$token,
[PSCustomObject]$sddc
)
try {
# Get AVS SDDC details
$sddcDetails = Get-AVS-SDDC-Details -sddc $sddc
# Define API endpoint
$apiUrl = [string]::Format(
"https://management.azure.com/subscriptions/{0}/" +
"resourceGroups/{1}/providers/Microsoft.AVS/privateClouds/{2}/" +
"providers/Microsoft.Insights/diagnosticSettings?api-version=2021-05-01-preview",
$sddcDetails.subscriptionId,
$sddcDetails.resourceGroupName,
$sddcDetails.sddcName
)
# Make the request
$response = Invoke-APIRequest `
-method "Get" `
-url $apiUrl `
-token $token
# Check the response
$recommendationType = if ($null -eq $response -or $response.value.Count -eq 0) {
"NoAVSDiagnostics"
} elseif (
$null -eq ($logCategory = $response.value.properties.logs | Where-Object { $_.category -eq "vmwaresyslog" }) -or
-not $logCategory.enabled
) {
"NoAVSSysLogDiagnostic"
}
# Add the recommendation
if (![string]::IsNullOrEmpty($recommendationType)) {
$Global:recommendations += Get-Recommendation -type $recommendationType `
-sddcName $sddcDetails.sddcName
}
}
catch {
Write-Error "AVS Diagnostic setting Test failed: $_"
}
}