Тип модуля задач мониторинга BPA Microsoft Windows Server 2016 и более поздних версий
Microsoft.Windows.Server.10.0.Monitoring.BPA.Task.ModuleType (ProbeActionModuleType)
Этот тип модуля используется для отображения результатов проверки анализатора соответствия рекомендациям.
Element properties:
Member Modules:
Overrideable Parameters:
Source Code:
<ProbeActionModuleType ID="Microsoft.Windows.Server.10.0.Monitoring.BPA.Task.ModuleType" Accessibility="Internal" Batching="false" PassThrough="false">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="IncludeCompliant" type="xsd:boolean"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IncludeCompliant" Selector="$Config/IncludeCompliant$" ParameterType="bool"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<ProbeAction ID="PassThrough" TypeID="System!System.PassThroughProbe"/>
<ProbeAction ID="PA" TypeID="Microsoft.Windows.Server.10.0.BPA.PowerShellPropertyBagProbe">
<ScriptName>Microsoft.Windows.Server.10.0.Monitoring.BPA.ShowBPAresults.Script.ps1</ScriptName>
<PSparam>
Param($IncludeCompliant)
</PSparam>
<ScriptBody><Script>function WriteBPAResult
{
param ([Microsoft.BestPractices.CoreInterface.Result]$BPAResult, [boolean]$IncludeAll)
$Delimiter = New-Object String("-",12)
if ($BPAResult.Problem -eq $null)
{
if ($IncludeAll)
{
Write-Host $(-Join("Title : ", $BPAResult.Title))
Write-Host $(-Join("Compliance : ", $BPAResult.Compliance))
Write-Host $Delimiter
}
}
else
{
Write-Host $(-Join("Title : ", $BPAResult.Title))
Write-Host $(-Join("Problem : ", $BPAResult.Problem))
Write-Host $(-Join("Impact : ", $BPAResult.Impact))
Write-Host $(-Join("Resolution : ", $BPAResult.Resolution))
Write-Host $Delimiter
}
}
function WriteModelResults
{
param ([string]$BPAModel, [boolean]$IncludeAll)
$ErrorActionPreference = "SilentlyContinue"
$error.Clear()
$BPAResults = Get-BPAResult -ModelId $BPAModel -ErrorAction SilentlyContinue
if (0 -ne $error.Count -and $null -eq $BPAResults)
{
if ($BpaCategoryError -ieq $error[0].CategoryInfo.Category)
{
Write-Host $BpaScanNotRun
Write-Host $BpaScanMonitor
}
else
{
$msg = $error[0].Exception.Message
$msg = $BpaErrorResults -f $msg
Write-Host $msg
}
return
}
if ($null -eq $BPAResults )
{
Write-Host $BpaEmptyResults
return
}
$NotCompliantResults = $BPAResults | Where-Object {$_.Problem -ne $null}
[boolean] $IsModelCompliant = [boolean]($NotCompliantResults -eq $null)
if ($false -eq $IsModelCompliant -or $true -eq $IncludeAll)
{
Write-Host "Server Role: " $BPAModel
$RoleSeparator = New-Object String("=", [int] (14 + $BPAModel.Id.Length))
Write-Host $RoleSeparator
}
foreach ($BPAResult in $BPAResults)
{
WriteBPAResult -BPAResult $BPAResult -IncludeAll $IncludeAll
}
}
Function Run-BPAResult()
{
$ErrorActionPreference = "SilentlyContinue"
$error.Clear()
$BpaModels = New-Object System.Collections.ArrayList($null)
$ImportedAssemblies = New-Object System.Collections.ArrayList($null)
if (0 -ne $error.Count)
{
Write-Host $BpaInitFailed
return
}
$iResult = Check-BpaRequirement -ModelsToRun $BpaModels -ImportedAssemblies $ImportedAssemblies
if ($BpaSuccess -ne $iResult)
{
if ($BpaModelLoadProblem -eq $iResult)
{
Unload-Modules -ImportedAssemblies $ImportedAssemblies
}
return
}
$IncludeAll = Convert-ToBoolean -sBool $IncludeCompliant
foreach ($BPAModel in $BPAModels)
{
WriteModelResults -BPAModel $BPAModel -IncludeAll $IncludeAll
}
Unload-Modules -ImportedAssemblies $ImportedAssemblies
}
Run-BPAResult</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>IncludeCompliant</Name>
<Value>$Config/IncludeCompliant$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="PA">
<Node ID="PassThrough"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>Windows!Microsoft.Windows.SerializedObjectData</OutputType>
<TriggerOnly>true</TriggerOnly>
</ProbeActionModuleType>