Private/DataTypes.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
####################################
# TestResult Data type
####################################
Add-Type -AssemblyName System.Web;
Add-Type -AssemblyName System.Collections;

Add-Type -Language CSharp @"
 
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Management.Automation;
 
public class TestResult
{
    public string Name;
    public string ComputerName;
    public ResultType Result;
    public string Detail;
    public Hashtable Output;
    public string ExceptionMessage;
    public string Exception;
 
    public TestResult(string name)
    {
        Name = name;
        Result = ResultType.Pass;
    }
}
 
public class TestResultsContainer
{
    public List<TestResult> AllTests { get; set; }
 
    public TestResultsContainer()
    {
        AllTests = new List<TestResult>();
    }
 
    public TestResultsContainer(TestResult[] newResults)
    {
        AllTests = new List<TestResult>();
        AllTests.AddRange(newResults);
    }
 
    public void Add(TestResult newResult)
    {
        AllTests.Add(newResult);
    }
 
    public void Add(TestResult[] newResults)
    {
        AllTests.AddRange(newResults);
    }
 
    public IEnumerable<TestResult> this[string testName]
    {
        get { return AllTests.Where(m => m.Name == testName).ToList(); }
    }
 
    public IEnumerable<TestResult> GetTestsByComputer(string computerName)
    {
        return AllTests.Where(m => m.ComputerName == computerName).ToList();
    }
 
    public IEnumerable<TestResult> PassedTests
    {
        get { return AllTests.Where(m => m.Result == ResultType.Pass).ToList(); }
    }
 
    public IEnumerable<TestResult> WarningTests
    {
        get { return AllTests.Where(m => m.Result == ResultType.Warning).ToList(); }
    }
 
    public IEnumerable<TestResult> FailedTests
    {
        get { return AllTests.Where(m => m.Result == ResultType.Fail).ToList(); }
    }
 
    public IEnumerable<TestResult> ErrorTests
    {
        get { return AllTests.Where(m => m.Result == ResultType.Error).ToList(); }
    }
 
    public IEnumerable<TestResult> NotRunTests
    {
        get { return AllTests.Where(m => m.Result == ResultType.NotRun).ToList(); }
    }
}
 
public enum ResultType
{
    Pass,
    NotRun,
    Fail,
    Error,
    Warning
}
 
public enum OSVersion
{
    WS2012,
    WS2012R2,
    WS2016,
    Unknown
}
 
"@
;

####################################
# AdHealthAgentInformation Data type
####################################

Add-Type -Language CSharp @"
public class AdHealthAgentInformation
{
    public string Version;
    public string UpdateState;
    public string LastUpdateAttemptVersion;
    public System.DateTime LastUpdateAttemptTime;
    public int NumberOfFailedAttempts;
    public string InstallerExitCode;
}
 
"@
;