PSWinVitals.format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
    <ViewDefinitions>
        <View>
            <Name>PSWinVitals.CHKDSK</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.CHKDSK</TypeName>
            </ViewSelectedBy>
            <TableControl>
                <TableHeaders>
                    <TableColumnHeader />
                    <TableColumnHeader />
                    <TableColumnHeader>
                        <Label>Output</Label>
                    </TableColumnHeader>
                    <TableColumnHeader />
                </TableHeaders>
                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <PropertyName>Operation</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>VolumePath</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <ScriptBlock>'{0} lines' -f $_.Output.Count</ScriptBlock>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>ExitCode</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
        <View>
            <Name>PSWinVitals.CrashDumps</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.CrashDumps</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <Label>Kernel</Label>
                                <ScriptBlock>
                                    $CrashDumps = $_.Kernel.Minidumps.Count
                                    if ($_.Kernel.MemoryDump) { $CrashDumps++ }
                                    return '{0} dump(s)' -f $CrashDumps
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>Service</Label>
                                <ScriptBlock>
                                    $CrashDumps = 0
                                    foreach ($Service in $_.Service) { $CrashDumps += $Service.CrashDumps.Count }
                                    return '{0} dump(s)' -f $CrashDumps
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>User</Label>
                                <ScriptBlock>
                                    $CrashDumps = 0
                                    foreach ($User in $_.User) { $CrashDumps += $User.CrashDumps.Count }
                                    return '{0} dump(s)' -f $CrashDumps
                                </ScriptBlock>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>PSWinVitals.DISM</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.DISM</TypeName>
            </ViewSelectedBy>
            <TableControl>
                <TableHeaders>
                    <TableColumnHeader />
                    <TableColumnHeader>
                        <Label>Output</Label>
                    </TableColumnHeader>
                    <TableColumnHeader />
                </TableHeaders>
                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <PropertyName>Operation</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <ScriptBlock>'{0} lines' -f $_.Output.Count</ScriptBlock>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>ExitCode</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
        <View>
            <Name>PSWinVitals.EnvironmentVariables</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.EnvironmentVariables</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <PropertyName>Machine</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>User</PropertyName>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>PSWinVitals.InstalledProgram</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.InstalledProgram</TypeName>
            </ViewSelectedBy>
            <TableControl>
                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <PropertyName>Name</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>Publisher</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>Version</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
        <View>
            <Name>PSWinVitals.KernelCrashDumps</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.KernelCrashDumps</TypeName>
            </ViewSelectedBy>
            <TableControl>
                <TableHeaders>
                    <TableColumnHeader>
                        <Label>MemoryDump</Label>
                    </TableColumnHeader>
                    <TableColumnHeader />
                </TableHeaders>
                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <ScriptBlock>if ($_.MemoryDump) { $_.MemoryDump } else { 'Absent' }</ScriptBlock>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>Minidumps</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
        <View>
            <Name>PSWinVitals.NGEN</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.NGEN</TypeName>
            </ViewSelectedBy>
            <TableControl>
                <TableHeaders>
                    <TableColumnHeader />
                    <TableColumnHeader>
                        <Label>Output</Label>
                    </TableColumnHeader>
                    <TableColumnHeader />
                </TableHeaders>
                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <PropertyName>Name</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <ScriptBlock>
                                    if ($_.Output.Count -eq 0) { return 'No output' }
                                    if ($_.Output.Count -eq 1) { return $_.Output }
                                    return '{0} lines' -f $_.Output.Count
                                </ScriptBlock>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>ExitCode</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
        <View>
            <Name>PSWinVitals.SFC</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.SFC</TypeName>
            </ViewSelectedBy>
            <TableControl>
                <TableHeaders>
                    <TableColumnHeader />
                    <TableColumnHeader>
                        <Label>Output</Label>
                    </TableColumnHeader>
                    <TableColumnHeader />
                </TableHeaders>
                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <PropertyName>Operation</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <ScriptBlock>'{0} lines' -f $_.Output.Count</ScriptBlock>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>ExitCode</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
        <View>
            <Name>PSWinVitals.UserProfileCrashDumps</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.UserProfileCrashDumps</TypeName>
            </ViewSelectedBy>
            <TableControl>
                <TableHeaders>
                    <TableColumnHeader />
                    <TableColumnHeader>
                            <Label>DumpCount</Label>
                    </TableColumnHeader>
                    <TableColumnHeader />
                </TableHeaders>
                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <PropertyName>Name</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <ScriptBlock>$_.CrashDumps.Count</ScriptBlock>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>CrashDumps</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
        <View>
            <Name>PSWinVitals.VitalChecks</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.VitalChecks</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <Label>FileSystemScans</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.FileSystemScans) { return 'Skipped' }
                                    if ($_.FileSystemScans -eq $false) { return 'Missing dependency: Storage module' }
 
                                    $ScanErrors = 0
                                    foreach ($Scan in $_.FileSystemScans) {
                                        if ($Scan.ExitCode -ne 0) {
                                            $ScanErrors++
                                        }
                                    }
 
                                    if ($ScanErrors -eq 0) { return 'Healthy' }
                                    return '{0} error(s)' -f $ScanErrors
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>ComponentStoreScan</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.ComponentStoreScan) { return 'Skipped' }
                                    if ($_.ComponentStoreScan.ExitCode -eq 0) { return 'Healthy' }
                                    return 'Error (RC: {0})' -f $_.ComponentStoreScan.ExitCode
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SystemFileChecker</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.SystemFileChecker) { return 'Skipped' }
                                    if ($_.SystemFileChecker.ExitCode -eq 0) { return 'Healthy' }
                                    return 'Error (RC: {0})' -f $_.SystemFileChecker.ExitCode
                                </ScriptBlock>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>PSWinVitals.VitalInformation</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.VitalInformation</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <Label>ComputerInfo</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.ComputerInfo) { return 'Skipped' }
                                    if (!$_.ComputerInfo) { return 'Missing dependency: Get-ComputerInfo cmdlet' }
                                    return '{0} {1}' -f $_.ComputerInfo.WindowsProductName, $_.ComputerInfo.OSVersion
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>HypervisorInfo</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.HypervisorInfo) { return 'Skipped' }
                                    if (!$_.HypervisorInfo) { return 'Not present or unknown' }
                                    return $_.HypervisorInfo.Vendor
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>DevicesWithBadStatus</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.DevicesWithBadStatus) { return 'Skipped' }
                                    if ($_.DevicesWithBadStatus -eq $false) { return 'Missing dependency: PnpDevice module' }
                                    return '{0} device(s)' -f $_.DevicesWithBadStatus.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>DevicesNotPresent</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.DevicesNotPresent) { return 'Skipped' }
                                    if ($_.DevicesNotPresent -eq $false) { return 'Missing dependency: PnpDevice module' }
                                    return '{0} device(s)' -f $_.DevicesNotPresent.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>StorageVolumes</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.StorageVolumes) { return 'Skipped' }
                                    if ($_.StorageVolumes -eq $false) { return 'Missing dependency: Storage module' }
                                    return '{0} volume(s)' -f $_.StorageVolumes.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>CrashDumps</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.CrashDumps) { return 'Skipped' }
 
                                    $KernelDumps = $_.CrashDumps.Kernel.Minidumps.Count
                                    if ($_.CrashDumps.Kernel.MemoryDump) { $KernelDumps++ }
 
                                    $ServiceDumps = 0
                                    foreach ($Service in $_.CrashDumps.Service) { $ServiceDumps += $Service.CrashDumps.Count }
 
                                    $UserDumps = 0
                                    foreach ($User in $_.CrashDumps.User) { $UserDumps += $User.CrashDumps.Count }
 
                                    return '{0} kernel dump(s), {1} service dump(s), {2} user dump(s)' -f $KernelDumps, $ServiceDumps, $UserDumps
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>ComponentStoreAnalysis</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.ComponentStoreAnalysis) { return 'Skipped' }
                                    if ($_.ComponentStoreAnalysis.ExitCode -eq 0) { return 'Completed' }
                                    return 'Error (RC: {0})' -f $_.ComponentStoreAnalysis.ExitCode
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>InstalledFeatures</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.InstalledFeatures) { return 'Skipped' }
 
                                    if ($_.InstalledFeatures -eq $false) {
                                        if ((Get-CimInstance -ClassName Win32_OperatingSystem).ProductType -gt 1) {
                                            return 'Missing dependency: ServerManager module'
                                        }
                                        return 'N/A for Windows clients'
                                    }
 
                                    return '{0} feature(s)' -f $_.InstalledFeatures.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>InstalledPrograms</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.InstalledPrograms) { return 'Skipped' }
                                    return '{0} programs(s)' -f $_.InstalledPrograms.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>EnvironmentVariables</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.EnvironmentVariables) { return 'Skipped' }
                                    return '{0} system variable(s), {1} user variable(s)' -f $_.EnvironmentVariables.Machine.Count, $_.EnvironmentVariables.User.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>WindowsUpdates</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.WindowsUpdates) { return 'Skipped' }
                                    if ($_.WindowsUpdates -eq $false) { return 'Missing dependency: PSWindowsUpdate module' }
                                    return 'Found {0} update(s)' -f $_.WindowsUpdates.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SysinternalsSuite</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.SysinternalsSuite) { return 'Skipped' }
                                    if (!$_.SysinternalsSuite) { return 'Not present' }
                                    return 'Present (Version: {0})' -f $_.SysinternalsSuite.Version
                                </ScriptBlock>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>PSWinVitals.VitalMaintenance</Name>
            <ViewSelectedBy>
                <TypeName>PSWinVitals.VitalMaintenance</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <Label>WindowsUpdates</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.WindowsUpdates) { return 'Skipped' }
                                    if ($_.WindowsUpdates -eq $false) { return 'Missing dependency: PSWindowsUpdate module' }
                                    return 'Installed {0} update(s)' -f $_.WindowsUpdates.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>ComponentStoreCleanup</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.ComponentStoreCleanup) { return 'Skipped' }
                                    if ($_.ComponentStoreCleanup.ExitCode -eq 0) { return 'Completed' }
                                    return 'Error (RC: {0})' -f $_.ComponentStoreCleanup.ExitCode
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>DotNetQueuedItems</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.DotNetQueuedItems) { return 'Skipped' }
                                    return 'Invoked for {0} .NET Framework runtimes' -f $_.DotNetQueuedItems.Count
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>PowerShellHelp</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.PowerShellHelp) { return 'Skipped' }
                                    if ($_.PowerShellHelp -eq $true) { return 'Completed' }
                                    return 'Completed with some errors'
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SysinternalsSuite</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.SysinternalsSuite) { return 'Skipped' }
                                    if ($_.SysinternalsSuite -is [String]) { return 'Failed: {0}' -f $_.SysinternalsSuite }
 
                                    if ($_.SysinternalsSuite.Updated) {
                                        $Status = 'Updated'
                                    } else {
                                        $Status = 'Up-to-date'
                                    }
 
                                    return '{0} (Version: {1})' -f $Status, $_.SysinternalsSuite.Version
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>ClearInternetExplorerCache</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.ClearInternetExplorerCache) { return 'Skipped' }
                                    if (!$_.ClearInternetExplorerCache) { return 'Missing dependency: inetcpl.cpl applet' }
                                    return 'Completed'
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>DeleteErrorReports</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.DeleteErrorReports) { return 'Skipped' }
                                    return 'Completed'
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>DeleteTemporaryFiles</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.DeleteTemporaryFiles) { return 'Skipped' }
                                    return 'Completed'
                                </ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>EmptyRecycleBin</Label>
                                <ScriptBlock>
                                    if ($null -eq $_.EmptyRecycleBin) { return 'Skipped' }
                                    if ($_.EmptyRecycleBin -eq $false) { return 'Missing dependency: Clear-RecycleBin cmdlet' }
                                    if ($_.EmptyRecycleBin -ne $true) { return 'Failed: {0}' -f $_.EmptyRecycleBin }
                                    return 'Completed'
                                </ScriptBlock>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
    </ViewDefinitions>
</Configuration>