5286cb37-dda1-463b-8642-289125c81d61
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAB7oSURBVHhe7d1ZcJV3nt/hucnU5CaXycUkVUkq
d8lcpSqVqVQlVVlmqqZ7MpPpzOLpnkn3uI2Nd9PewRtgjGnD4A2wu73bYIPBLEYgQAIhhBA7EkiI
TdJZdLSABALaS7f9y/seYMZjq8PrNiit9zyfqqckHekcHRUX/+85aPkNSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIk1W7zf+u3frPxD//wDxtnz5nbOGvWnMaZAMCkMnv23MYZM2Y0/pt//a8ak7M9
9f/uN3/zH+2+8657orG1PQ73nokjfSPVlwDA9dOZnLddxbPXzNHSueg4NRzvrlwXv/M7/y4uH/O/
vG9/69uNDTvbo617IBr3nUgcv/wSALgeth04GfW7umLl5n3XzKqG/cltn4z23pH42+cWXX0AzHlq
XmO6HLYmd6bp4CkA4DranmjYezyWrW2JdQ37Ym1ycK+tvrxk/baDsaG5IzZsb491jQcuX74/6pra
q5fXNR2qvv3F66Rvf1C/O1bU7Yo9xwejsXl3hgEwZ27jsf6x6p1qPtQDAFxHO9p7o761K1asb422
rmJ1EFyRvm9DS0e8saohlq7bXr1s5+FC1YqNu+KNlVtiTePeaOnoS97X83fXa0peb0ksXdMS+44P
RX3DjqsPgNmzn2o8Vh6L7Yd6q5+45XApWo+Ukk9WTD7BpcsAgGsjPbw3t3XHyo27k7O2r/pfAlv3
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
BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAb
BkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcA
AJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEA
ZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAA
uWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2
BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAb
BkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcA
AJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEA
ZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAA
uWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2
BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAb
BkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcA
AJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEA
ZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAA
uWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2
BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAb
BkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcA
AJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEA
ZGcAAJAbBkB2BgAAuWEAZGcAAJAbBkB2BgAAuWEAZDdhA2B4eDhuvvnmWL16daxbtw4Arrm6urpY
smRJPPzwwwbAVUzYABgZGYk/+qM/qq6y6dOnA8A19+ijj8aUKVPi9ttvj7TxziQumZABcC75+PPn
z1efnlm0aBEAXDeLFy+OxsbGuHjx4rhnEpdMyAC4In06RpKk692nn34ao6Oj455FXDKhAwAA+PVg
AABADTIAAKAGGQAAUIMMAACoQQYAANQgAwAAapABAAA1yAAAgBpkAABADTIAAKAGGQAAUIMMAACo
QQYAANQgAwAAapABAAA1yAAAgBpkAABADTIAAKAGGQAAUIMMAACoQQYAANQgAwAAapABAAA1yAAA
gMtGR8/GpxfPRXw6Nvl9MhbnxvkarzAAAOCyn104F9uODsdTG8rxcF05ZiQvJ5vpyf1+LLG4uRJn
Ri4d9ON9rQYAAFwWPx+LKe8X4p88cCS+/ZPu+O+LJ5/ff6k7/sOCrvjHM45GeWg0Lo6Nf2YbAABw
WfrU+Y3Li/FXbx+LOF+MscHCpPPzM4XY09Ub/2LOsSgaAABwdekA+OGKYvzZ68fiwlAh+vr6rplC
oXDZlcu+/Pq1+XyD5b5oONhjAABAVtdjAPT29kVlYDD6i73R3Z0cypXBqJSLUSiWolwqRm9y+A8O
DkRfz6noST52vNv4OgwAAPiarscAqAwMxMEd6+LeO2+OGQ/fH9OeWBCdxaFoW70kXli0Mi58fD6W
Pfto3HT7nOg4VY5y8Zt9XgMAAL6maz0ACqX+6D++K27/wffipfV749zZkVi75NG4/ZlXo/6NOTF7
1sux/u2FcfNdj8euzp7qMwPj3c7XYQAAwNd0rQdAeWA4Dnz4Rtx4y4IoJQdxqTQYla7muG/qzFj6
6jPx3f/yn+M//vvfi1V7CnHx7GD09vaOeztfhwEAAF/TtR4ApcpgdDW9H9///gNxZOh8nD//URT2
rEke8T8Z778yN26dMiM+eHNh/Pn/uT+6K2djoFyI3nFu5+swAADga7rm3wNQKMbwwKl4btZdMfXh
p2Nj3eqYMW1qvLh+R2x77YmY/ugr8fFnH8WLD94Y37/3qThWGIiS7wEAgIl1Pb4JsFAsx1B/T6x6
44VYsGB+vF23I86MjMbhtq3R2NgapYHT0X+qPd5+fXHs7uzzTYAAMNGuxwCoKhRj6PRo9W8NnB6s
VP+vv9Q/EAMD/cnrPdWRcPrMSHL49/kvAACYaOkAuDEZADe8eSx+MVKoHqaTzbnBvmjuMAAAILN0
APzN8mL83uLu6DjWG9vbeyadts6eeLP5ZPzTWd0GAABk8fknY/FEfSn+2fSu5BF0d/zzSeq3Z3bH
v51/IgaGDQAAuKpzyaE4dGY0CgOj0TOJ9Q6MVP8S4Hhf4xUGAAB8wfnkYLx4/tzkNzb+13eFAQAA
NcgAAIAaZAAAQA0yAACgBhkAAFCDfqUBMDZ27tIVAYBJ6cLY2Tj/ccYBMPvJuVs/ikgWw2fV1QAA
TE4XEumZ3tx28OoDYNq0H7Xu2tsRW5raqosBAJi80sP/naXLrz4AJEmSJEmSJEmSJEmSJEmSJEmS
JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS
JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS
JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS
JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS
JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS
JEmSJEmSJEmSJEmSlIt+4zf+L7WWhldjTtp/AAAAAElFTkSuQmCC
[OutputType([System.Data.DataTable])]
param (
[ValidateNotNull()]
$InputObject,
[ValidateNotNull()]
[System.Data.DataTable]$Table,
[switch]$RetainColumns,
[switch]$FilterWMIProperties)
if ($null -eq $Table) {
$Table = New-Object System.Data.DataTable
}
if ($InputObject -is [System.Data.DataTable]) {
$Table = $InputObject
} elseif ($InputObject -is [System.Data.DataSet] -and $InputObject.Tables.Count -gt 0) {
$Table = $InputObject.Tables[0]
} else {
if (-not $RetainColumns -or $Table.Columns.Count -eq 0) {
#Clear out the Table Contents
$Table.Clear()
if ($null -eq $InputObject) { return } #Empty Data
$object = $null
#find the first non null value
foreach ($item in $InputObject) {
if ($null -ne $item) {
$object = $item
break
}
}
if ($null -eq $object) { return } #All null then empty
#Get all the properties in order to create the columns
foreach ($prop in $object.PSObject.Get_Properties()) {
if (-not $FilterWMIProperties -or -not $prop.Name.StartsWith('__')) #filter out WMI properties
{
#Get the type from the Definition string
$type = $null
if ($null -ne $prop.Value) {
try { $type = $prop.Value.GetType() } catch { Out-Null }
}
if ($null -ne $type) # -and [System.Type]::GetTypeCode($type) -ne 'Object')
{
[void]$table.Columns.Add($prop.Name, $type)
} else #Type info not found
{
[void]$table.Columns.Add($prop.Name)
}
}
}
if ($object -is [System.Data.DataRow]) {
foreach ($item in $InputObject) {
$Table.Rows.Add($item)
}
return @( ,$Table)
}
} else {
$Table.Rows.Clear()
}
foreach ($item in $InputObject) {
$row = $table.NewRow()
if ($item) {
foreach ($prop in $item.PSObject.Get_Properties()) {
if ($table.Columns.Contains($prop.Name)) {
$row.Item($prop.Name) = $prop.Value
}
}
}
[void]$table.Rows.Add($row)
}
}
return @( ,$Table)
}
#endregion
]]>
1
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089