# very dirty trick - remove in next version by passing timeout into script
if ($taskName -eq 'Microsoft.Windows.DNSServer.2016.Task.HealthCheck.ConfiguredRootHints')
{
$calcTimeout = $targets.Count * 1000
$overrides.Add("TimeoutSeconds",$calcTimeout.ToString())
}
else
{
$calcTimeout = 250
}
if($OutputFolder -eq $null -or $OutputFolder -eq "")
{
# here we do not remove linebreaks
$xml = [xml]($taskResult.Output)
$str = $xml.DataItem.Description
$str = $str.Replace("&amp;lt;","<")
$str = $str.Replace("&amp;gt;",">")
$str = $str.Replace("&lt;","<")
$str = $str.Replace("&gt;",">")
$resultHtml = $str
#Write-Host "OutputFolder parameter is not specified, task report will not be written."
Write-Host $resultHtml
}
else
{
$xml = [xml]($taskResult.Output)
$str = $xml.DataItem.Description
$str = $str.Replace("`n","");
$str = $str.Replace("`r","");
$str = $str.Replace("&amp;lt;","<")
$str = $str.Replace("&amp;gt;",">")
$str = $str.Replace("&lt;","<")
$str = $str.Replace("&gt;",">")
$resultHtml = $str
Write-Host "OutputFolder: " $OutputFolder
try
{
Save-TaskHtmlReport -path $OutputFolder -reportName $ReportName -html $resultHtml
}
catch
{
Write-Host "Report writing failed, .html report will not be written to output folder. You can find it below."
Write-Host
Write-Host $resultHtml
}
}
}
else
{
if($taskResult.Status -eq [Microsoft.EnterpriseManagement.Runtime.TaskStatus]::Started)
{
Write-Host "Remote task was timed out. Report will not be written to output folder."
}
else
{
$res = $taskResult.Status
Write-Host "Remote task failed with status " $res
}
}
}
else
{
Write-Host 'No objects to perform complex tasks. Computer with DNS Server role required.'
}
}
$targets = Get-SCOMClass -Name 'Microsoft.Windows.DNSServer.2016.Zone' `
| Get-SCOMClassInstance `
| where {$_.'[Microsoft.Windows.DNSServer.2016.Zone].IsSigned'.Value}