IntuneScriptLab.Format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
    <View>
      <Name>IntuneScriptLab.Finding</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.Finding</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>ScriptPath</PropertyName>
        <Label>Script</Label>
      </GroupBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Severity</Label>
            <Width>11</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Rule</Label>
            <Width>22</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Line</Label>
            <Width>5</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Message</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Severity</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>RuleName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Line</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Message</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>IntuneScriptLab.DeploymentFinding</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.DeploymentFinding</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <ScriptBlock>"$($_.Kind) '$($_.PolicyName)' ($($_.PolicyId))"</ScriptBlock>
        <Label>Policy</Label>
      </GroupBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Severity</Label>
            <Width>11</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Rule</Label>
            <Width>22</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Role</Label>
            <Width>11</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Line</Label>
            <Width>5</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Message</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Severity</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>RuleName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Role</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.Line) { $_.Line } else { '' }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Message</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>IntuneScriptLab.DriftResult</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.DriftResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Kind</Label>
            <Width>14</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Policy</Label>
            <Width>26</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Role</Label>
            <Width>11</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>State</Label>
            <Width>11</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Differences</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Detail</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Kind</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>PolicyName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Role</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>State</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>@($_.Differences) -join ', '</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Detail</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>IntuneScriptLab.HealthReport</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.HealthReport</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Health</Label>
            <Width>9</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Kind</Label>
            <Width>14</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Policy</Label>
            <Width>26</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Err</Label>
            <Width>3</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Warn</Label>
            <Width>4</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Drift</Label>
            <Width>9</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>OK</Label>
            <Width>5</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Fail</Label>
            <Width>5</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Notes</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Health</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Kind</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>PolicyName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Errors</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Warnings</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Drift</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Succeeded</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Failed</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Notes</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>IntuneScriptLab.AgentTimeline</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.AgentTimeline</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Started</Label>
            <Width>18</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Kind</Label>
            <Width>14</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Name</Label>
            <Width>36</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Duration</Label>
            <Width>8</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Runs</Label>
            <Width>4</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Outcome</Label>
            <Width>26</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Summary</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>$_.Started.ToString('MM-dd HH:mm:ss')</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Kind</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.Duration.Days) { '{0}d {1}' -f $_.Duration.Days, $_.Duration.ToString('hh\:mm\:ss') }
                  else { $_.Duration.ToString('hh\:mm\:ss') }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Runs</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Outcome</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Summary</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>IntuneScriptLab.Repair</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.Repair</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Applied</Label>
            <Width>7</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Remaining</Label>
            <Width>9</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Written</Label>
            <Width>7</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Fixes</Label>
            <Width>30</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Path</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Applied</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Remaining</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Written</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>($_.Fixes | ForEach-Object { "$($_.RuleName)@$($_.Line)" }) -join ', '</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Path</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>IntuneScriptLab.RemediationResult</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.RemediationResult</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Status</PropertyName></ListItem>
              <ListItem><PropertyName>IntuneOutput</PropertyName></ListItem>
              <ListItem><PropertyName>IntuneError</PropertyName></ListItem>
              <ListItem><Label>PreDetection</Label><ScriptBlock>"exit $($_.PreDetection.ExitCode) in $($_.PreDetection.Duration.TotalSeconds.ToString('0.0')) s"</ScriptBlock></ListItem>
              <ListItem><Label>Remediation</Label><ScriptBlock>if ($_.Remediation) { "exit $($_.Remediation.ExitCode) in $($_.Remediation.Duration.TotalSeconds.ToString('0.0')) s" } else { 'skipped' }</ScriptBlock></ListItem>
              <ListItem><Label>PostDetection</Label><ScriptBlock>if ($_.PostDetection) { "exit $($_.PostDetection.ExitCode) in $($_.PostDetection.Duration.TotalSeconds.ToString('0.0')) s" } else { 'skipped' }</ScriptBlock></ListItem>
              <ListItem><PropertyName>Warnings</PropertyName></ListItem>
              <ListItem><PropertyName>Architecture</PropertyName></ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>IntuneScriptLab.DetectionResult</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.DetectionResult</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Detected</PropertyName></ListItem>
              <ListItem><PropertyName>Reason</PropertyName></ListItem>
              <ListItem><PropertyName>ExitCode</PropertyName></ListItem>
              <ListItem><PropertyName>StdOut</PropertyName></ListItem>
              <ListItem><PropertyName>StdErr</PropertyName></ListItem>
              <ListItem><PropertyName>Architecture</PropertyName></ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>IntuneScriptLab.RequirementResult</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.RequirementResult</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Applicable</PropertyName></ListItem>
              <ListItem><PropertyName>Reason</PropertyName></ListItem>
              <ListItem><Label>Rule</Label><ScriptBlock>"$($_.OutputType) $($_.Operator) '$($_.Value)'"</ScriptBlock></ListItem>
              <ListItem><PropertyName>Output</PropertyName></ListItem>
              <ListItem><PropertyName>ExitCode</PropertyName></ListItem>
              <ListItem><PropertyName>StdErr</PropertyName></ListItem>
              <ListItem><PropertyName>Architecture</PropertyName></ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>IntuneScriptLab.Win32AppResult</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.Win32AppResult</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Status</PropertyName></ListItem>
              <ListItem><Label>PreDetection</Label><ScriptBlock>"detected=$($_.PreDetection.Detected) exit $($_.PreDetection.ExitCode): $($_.PreDetection.Reason)"</ScriptBlock></ListItem>
              <ListItem><Label>Install</Label><ScriptBlock>if ($_.Install) { "exit $($_.Install.ExitCode) in $($_.Install.Duration.TotalSeconds.ToString('0.0')) s" } else { 'skipped' }</ScriptBlock></ListItem>
              <ListItem><Label>PostDetection</Label><ScriptBlock>if ($_.PostDetection) { "detected=$($_.PostDetection.Detected) exit $($_.PostDetection.ExitCode): $($_.PostDetection.Reason)" } else { 'skipped' }</ScriptBlock></ListItem>
              <ListItem><Label>Dependencies</Label><ScriptBlock>if ($_.Dependencies) { ($_.Dependencies | ForEach-Object { "$($_.Name): $($_.Status)" }) -join '; ' } else { 'none' }</ScriptBlock></ListItem>
              <ListItem><Label>Superseded</Label><ScriptBlock>if ($_.Superseded) { ($_.Superseded | ForEach-Object { "$($_.Name): $($_.Status)" }) -join '; ' } else { 'none' }</ScriptBlock></ListItem>
              <ListItem><PropertyName>Warnings</PropertyName></ListItem>
              <ListItem><PropertyName>Context</PropertyName></ListItem>
              <ListItem><PropertyName>Architecture</PropertyName></ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>IntuneScriptLab.AgentLogEntry</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.AgentLogEntry</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Time</Label>
            <Width>18</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Log</Label>
            <Width>14</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Event</Label>
            <Width>21</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Detail</Label>
            <Width>18</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Message</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>$_.Time.ToString('MM-dd HH:mm:ss.fff')</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>$_.Log -replace '^IntuneManagementExtension', 'Agent'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Event</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($null -ne $_.Detail -and $_.Detail.Length -gt 18) { $_.Detail.Substring(0, 17) + '~' } else { $_.Detail }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Message</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>IntuneScriptLab.FilterResult</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.FilterResult</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Applicable</PropertyName></ListItem>
              <ListItem><PropertyName>Matched</PropertyName></ListItem>
              <ListItem><PropertyName>Mode</PropertyName></ListItem>
              <ListItem><PropertyName>Reason</PropertyName></ListItem>
              <ListItem><Label>Clauses</Label><ScriptBlock>($_.Clauses | ForEach-Object { $state = if ($null -eq $_.Matched) { 'not evaluated' } elseif ($_.Matched) { 'matched' } else { 'not matched' }; "$($_.Text) [$state, actual: $($_.Actual)]" }) -join "`n"</ScriptBlock></ListItem>
              <ListItem><PropertyName>Warnings</PropertyName></ListItem>
              <ListItem><PropertyName>Rule</PropertyName></ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>IntuneScriptLab.FilterClause</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.FilterClause</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Property</Label>
            <Width>22</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Operator</Label>
            <Width>11</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Value</Label>
            <Width>28</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Actual</Label>
            <Width>28</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Matched</Label>
            <Width>7</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Property</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Operator</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($null -eq $_.Value) { '$null' } else { @($_.Value) -join ', ' }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Actual</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Matched</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>IntuneScriptLab.PlatformScriptResult</Name>
      <ViewSelectedBy>
        <TypeName>IntuneScriptLab.PlatformScriptResult</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>RunState</PropertyName></ListItem>
              <ListItem><PropertyName>ExitCode</PropertyName></ListItem>
              <ListItem><PropertyName>ResultMessage</PropertyName></ListItem>
              <ListItem><PropertyName>Duration</PropertyName></ListItem>
              <ListItem><PropertyName>Architecture</PropertyName></ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
  </ViewDefinitions>
</Configuration>