bcff533d-09cc-4234-bc96-dd430c6421b6
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAB8ESURBVHhe7d1ncF33fefhTJKZ3Rd5tclkZmc2
uy+ym53Z7sT2bOJk48SaRDVuEqlG9RJLtkVbpqolW5JtNasrkiVZkqnK3osIVoAgQQJEZQEIkCgX
F7gorCApKrLk355zSVq0Fg5JC9KS/D+fmWcI3HJA4M35ngsQ/C1JkiRJkiRJkiRJkiRJkiRJkiRJ
kiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJ
kiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJ
kiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJOh2a8tu//duNf/iHf9B45ZVXNt48
6ZbGm2+e1HjztwGAU8LNtzTeMmlS45/+6acaf/d3f7cxO7fn/uV+53d+Z+tf/Pmfx4MPPxYrapqi
rWdnZke0dgMAp4K2nl2xaXt/TJ+zIMaNGxe/93u/F4dP87++P/j932984KFHo6FjIKo2FmJ5fUfZ
ivptAMBHsKqpM6pauj52lc1dsbKxMxq2DcfiZVXx6T/7s2MPgCsuu6Jx+ZrGqN7UG6sasr9s43YA
4CPZFlXZyX/O8oaYPLMyUxWTZ31MsuO/Prc6lq1vi8rsYzZvH4pHHn382APglltubdzWv7e8HPIn
AgAfTfXG7pi7oiley07QS9dsiiXVG0dVkd33Sx++7+j7q/+FY2T3LVhRH5NnVMaK7EJ+a9++mPzK
68ceAJMm3dK4PRsAq7IBUNXcBQB8RDWbe2PqotqYvaQu1m8plF8VqPyQ1dnjVmYn7KW1W2NZZnVz
d6xu6orKhkP35e8vrW2Lpeu3lp+f3/bhY+Ty+2qywfHS1OXlbzu09Y3Eiy9NPp4BMKk8AKqyD1Td
AgB8VOu2FGN6dvKfXbEhajYVshNzR6zMTs65/O2q7EQ/Z3l9/OCh5+Le+5+Oe3/0dNz/2MuxvK49
qjcWskHQHj985MW4L78v88MfPx/zVzVmJ/zOQz9fsKEjk/+5LZZn1mYf82fTV5XHwNb+fb/5AFiT
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
kAEAAAkyAAAgQQYAACTIAACABBkAAJAgAwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZ
AACQIAMAABJkAABAggwAAEiQAQAACTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEA
AAkyAAAgQQYAACTIAACABBkAAJAgAwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZAACQ
IAMAABJkAABAggwAAEiQAQAACTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEAAAky
AAAgQQYAACTIAACABBkAAJAgAwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZAACQIAMA
ABJkAABAggwAAEiQAQAACTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEAAAkyAAAg
QQYAACTIAACABBkAAJAgAwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZAACQIAMAABJk
AABAggwAAEiQAQAACTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEAAAkyAAAgQQYA
ACTIAACABBkAAJAgAwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZAACQIAMAABJkAABA
ggwAAEiQAQAACTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEAAAkyAAAgQQYAACTI
AACABBkAAJAgAwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZAACQIAMAABJkAABAggwA
AEiQAQAACTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEAAAkyAAAgQQYAACTIAACA
BBkAAJAgAwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZAACQIAMAABJkAABAggwAAEiQ
AQAACTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEAAAkyAAAgQQYAACTIAACABBkA
AJAgAwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZAACQIAMAABJkAABAggwAAEiQAQAA
CTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEAAAkyAAAgQQYAACTIAACABBkAAJAg
AwAAEmQAAECCDAAASJABAAAJMgAAIEEGAAAkyAAAgAQZAACQIAMAABJkAABAggwAAEiQAQAACTIA
ACBBBgAAJMgAAIAEnRYD4Mtf/nI899xzMX/+/JgzZw4AcAwVFRUxceLEuOOOO07NAfDuu++WXwH4
whe+EOecc06cffbZAMAxnHfeefHZz342HnroofjFL34x6nn2aCfVAMjlI6BYLEZra2ts3rwZADhO
7e3tMTQ0VD6XjnaOPdpJNwBy+/fvj7fffhsAOEH79u0b9dz6YSflAAAAPl4GAAAkyAAAgAQZAACQ
IAMAABJkAABAggwAAEiQAQAACTIAACBBBgAAJMgAAIAEGQAAkCADAAASZAAAQIIMAABIkAEAAAky
AAA4Lewf2RMHEpd/DUb72ozGAADgtDC0c3cM7Ehb/jUY7WszGgMAgFPaSHY+OrBvb/z9C53xb77b
Fv/qu1vjX9+Vlvxz/v072+K8l7rinf17j+scbQAAcErLB8Db2QD4Dw90xKcebouHl2yP78/flpT8
c/5vD7bFf/7xtvjnAwYAAAk4MgD+6P6OuPbN9oh9vbFvsJCU/HOe8Gp7/KeHDQAAEnFkAPz7Bzri
suwkuH+oED09PUnZl33O415ujz/xCgAAqfj/NQAKvcXo6+srKxY++Ji9xWL0Fj54XP5+sdj7y/c/
DgYAAMn5pAdAd3dP9A8ORal7azTU10d9Q1NsKw7GUKkYPd3d0bV9e3R1dZcf2z8wEL3b2qK5ZUt0
9RSi8KFjjRUDAIDkfNIDoL80ENsbl8akq78SXxp/cVx0wVdiwq0/jsbWUuzcsyUeu+qCeGJqXeze
ty8K9bNi3P/5m7jy5mdjczYS+o56ZWAsGQAAJOeTHAC9xVIMbKuOm8Z/Pi68b1qUhnfGjsGeePn2
C+Lcmx+Lrt0d8YPz/joenrYxdrQtjuvOOSOueWB6dJdKUfyYTv45AwCA5HySA6A0OBi1Ux6K8867
JRqHR2K4WIhCaVfsaX8rzv+7q2J6Q108MeEf4gcPPhmX/vln46anK8rny77e0Y83VgwAAJLzSQ6A
gaGBWPr0XfF345+MzpEdUezObu8txXBPTdz891fES5U18eiXPxuf/rMvxLl/+Tdx7d1vRHFkV/SN
cqyxZAAAkJxPcgD0Dw5G4+zH47yzb4w1xT2xa6Av+oZHYufGWXHumVfHvE2N8dCX/zpue2Zl9LfO
i3M/9Rdx15trY8/O4Y/tBwBzBgAAyfkkB0Ch2B9DhYb43rVnxpnffCKaWjuifVNtPHD9uXHJvS9H
/0hH3Hv25+JHr9bFgXcORMO0++IvPnNWvLxiU/mfC/pXAAAwRj7JAZDrHxiKge6WePLOa+L8Cy+J
i8ePj4mPT4lC367Ytac9Xph0Q7w4tz5KAwMxPDwU0x64Ii68YVKs7xiO0sf0swAGAADJ+URfASgU
YsuWLbFpS1u0t7XGxpaWaGnZGK1bt8aWzRujubklugu90d/XW/6dAD3Z2/kQ6Ov9eEeJAQBAcj6p
AZCf/AcHB+N73/tejBs3LsZlV/7jfyl7P78ts3DhwuzKf/iD52bPy5979LHGmgEAQHI+6W8BnIwM
AACSc2QA/Lv7O+K6I/8bYHZC/LjsH+qNA8O/Xj5ARnvex8n/BghAcn75CsD97fFH92yJK17riAt/
1p6U/HP+t3dviT95uCPeNQAASEE+AA6M7I3L3uyJ/5ldAf/xQ9viP2Z/piT/nP9X5pppPXFwvwEA
QELyE1/+8vc/53+mKPvcD+7bO+rXZjQGAACnhfy8xOhfm9EYAACQIAMAABJkAABAggwAAEiQAQAA
CTIAACBBBgAAJMgAAIAE/UYDYCgbAHuyAZA/GQA49ezK7DjeATBp0qTmg7+I8hPy1QAAnJryc/nP
I+LV16YcewBcdtnlGye/8ka88OLkeD5bDPlqAABOTa++9mZMuuW2Yw8ASZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSTq5+63f+r+lDS/NhFWfZwAA
AABJRU5ErkJggg==
[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