0f108260-d3b3-4fa7-b8c4-bef26d7f1442
132106286467697655
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAADr0SURBVHhe7d33d1z3fef/5GR/2PwB3/0pu7/E
+bacs5s4ZXfjbOL0rBXJjmVLdCzJVLEkkiIl9gYQBAmCJCqJRoBgBdFBgugdRG9EL4NB75UgKgE2
SX59P/cCFCULkkXJ+YbMfT7PeRyB4MydO3cG83nfAQj9BhERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERER/f9a9m/+5m+6f/s//kf3888/596yZat7q2H9FwAAPP22bt3mfuutN93/6T/9H+7f
+q3fcpu13fLl/dZ/+A9Dv//7/6+279iplPRctfdOqHv4trqGZgAAwDOge3hGtc2d8g8I0p9/5zv6
7d/+ba0t81+cuZB75849qmnpVU3nhEqa+nWjsU83mgAAwK9bacuAylsHbWXf0KPtWNssax1WW/+0
os5e0O/8zu/86gHgpz/9qbuutVfVrlGVNverDAAA/KuoMIt1fk2nrhU2/lrlV3eaQWDAHgT6xhfl
5eX9qweA7R9sdw9NLa1ODwAA4F9FZduQcio6FHO1VHHXyxWXVmGLX/vvL3/8RT53GbOty2ab2eXt
9u0MTK8oJCTsVw8A1g8ODIzP228hWJNJhZkgqlzjqu+eeqxrQtVtq28zrF7mCbWNqO6T7U2qpn3o
U9saVq17UvU91t+Nq7p9WDXm9qvbze2ZO1LeZv7eNaoqc/uf2+56rMu7zfU/ffmWIdV0jtu3+5nL
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
AByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAA
AMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYA
AAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IA
AADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAG
AAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdi
AAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAg
BgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAH
YgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABw
IAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAA
B2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAA
cCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAA
AAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAA
AHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEA
AAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgA
AABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgB
AAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEY
AAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByI
AQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCB
GAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAc
iAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADA
gRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAA
HIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAA
wIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAA
AByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYAAAAciAEAAAAHYgAA
AMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IAAADAgRgAAABwIAYA
AAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcCAGAAAAHIgBAAAAB2IA
AADAgRgAAABwIAYAAAAciAEAAAAHYgAAAMCBGAAAAHAgBgAAAByIAQAAAAdiAAAAwIEYAAAAcKBn
dgCoqqrSX/zFXygvL0/Xr18HAABPwFo///Iv/9I+oX5mBoD79++rpaVFv/u7v6u//uu/tu8AAAD4
6qz181vf+pba2trsdXW99fapGwAWFxc1Nzen7u5utba2AgCAr8FaR+fn5+11dd311niqBgCLtbP3
7t0DAADfwBct/pancgAAAAD/up7qAcCaXPDVrHf8AAD4Ik/tALC0tKQ7d+7YPw8wOzuLL2EdI+tY
MQgAwNezZF4/7y4v6d7KHd2z/vusMvtv3Q/r/qx3Pz/tqf0ZAEtubq4iIiJ07tw5fAnrGBUWFtpD
E0MAAHx188bynUXNz82rb2BMnd0jcvc8u6z97x8ctxf3O0tfvh48lQOA9U8WrF9eEBoaqtHRUXth
W+9yMA+wOfMfHBzUqdOnVd/QYP/Qx3qXAwB8nnWmPDM7p7D8Nv39pQb90cUm/enFxmfWH5v9f+5S
vS6XuOx/AfBl7wQ8lQOA9UsL8vPzVVRUJKvl5WV7ocP6rLKzs3Xjxo0v/IUPAIDP+/DeHWXXduvP
4tu0uf+BsuY/VNrsw2dSusXs/2td9/TdK02qah3Qw7t31r3flqd2ACgoKLAHgI8//viTbwmsvr29
pAf2kve4D+8tm88/vsyTM7e7tKKPP3pofw/lK2/L7OvSygM9uG+ud/++Pn5w1/7cupf9MuY6K/c/
1oO7K+bPT3Z963j94he/UE5ODgMAADwhPVjR2dxmfSdnWH13zeqysmjOOn89fnFnaW2VepTZ/rJ5
zbZP3B5K95bMx2YfPvp49a/vmr9bZztPxOx/4/KH+uNrPUot69DH91fWvd+Wp3oAsL6vbQ0A1tsY
q3+3pOW7t1STeFbeXp7yOOghzyMnVdQ5aS/c1vdyVi83b66zqJW7d+0fhnh8/S+weEd3b/UqM69E
LcMz5qz6q30fffHOXU33Vqu2rkz11eWKK27T4sqyfVDXu/wXWbqzor76NFV39Nn78ujz9i9wMH93
3xpwzMeP799j1mWsY8Q7AADw5OwBIK9Ff5E9pImVe7q7tP7J1pOyT1Y/XlFb+hV5e3rIw8NTZzLq
tHj3Q929O6GbqRVym/Xmvln8x25eU1DEObkmze2b9We97X1VD8z+9yzf159e7VZquevZHgA+/PBD
3b592/5J97l5s1A/6NTJv96gt3f7KOxMmA5v26i3Nl3UkFl4l81iaV3+wwf39XB5QkVp6cqr6jcH
+IEemm0+uHdPKyvmLH1+VrNz87qzfE9LC3OaXbwnDeTrn3/2gaKrh8zZ/IruPTDb+fCBGajmNWs9
kA+tP3+oh2Yxnp+9rfnFFVkz22S5n46c3K0bDb0qbujS/LJZsM3gcd+6vtnO/JzZ98Vl3V+7vvUT
mvOf/AT/nJaWV9/PqIx8QUfji2T98SPrPjx8YLZzR0PtpboUX6W5+/f08P7D1ft337oPj/91xEcf
fWQPACUlJQwAAPAErAEg2h4ABjVs1pBl+wTym1rQinktHqg5L4+fb9TR4LOKjAzW7s0bFH2jVw9/
0aOAvzuorNZp3R2q0Ob3tsgrOlF9t+6aNWf1xO7rumf2v2Ppnv7EDABpz/oA8PDhQ3sAsBe7uSUt
rbQp9EdBqp9Ye8tktFz7X9qt6oWPdKevVgnxcUrMb9TcTLt8396gjR6J6hrrUnF+pq7nFKrhZrXG
Zu5o8fakXK5yuQZnzFn2PX08WKxXNu3TpfpJaWVSFdkJikvIUMvYHS2PtiolKV7x8fG6XtphDtZ9
LYw2Ky8jU2ePvq7tx46qeWBOvcPjmpnoV3V9jfKuxSqpsEVTSw+0NN5m/myun3RNpQ2dujVn/brj
WS0sLWukNVcpKak6tuWv5J9yQy21JYqPi1NCcrbaR2+rNm6f/v6F/Spvb1NB5lX775Ly6jV62xwr
M8hYx8YaChgAAODJfXoAGFo065p5bX50cvW1mdf4B0vDig30kF98/epaZRouPq0X34nSwF23on4S
pOKiXB15a7eOpLbroX6hO/O3dXu97T2BZXPS2baw8uwPABbrXwBY/xJgbGxMY+PTur3QIv/v/Vg/
/tkm7d67W1vf2Cf/kHwNjTTJ9/gebXx7q155c7NOJV7Sjh/8uf72dV+Fntym//tPvq+9/ie1f8er
8i8Z1YK7UAd+8poSW8fMGfm8lt05+snbexVX06WS5NP64YaX9eZPfqTNAWFqqcrX3vff1bvvvKMX
X9uo3KZ2nT+5Rf/08iva8I/f1qsfHNXF8JP6wdF09ZVF6NvfeU5vvvu2nt/wU6XXtSo2eIf+6aWf
6iff+7a+97Ndahq7r9sztzThqtB7bzynl97YqL/7o2/p6KV8ZVwO1KbNW/X6Sy9qT0iYYk7+XN/+
05d1ITVNJ712aNOWrfrhSz9SZN5NTd2a0Zg5NtYPAmZlZTEAAMATejQA/K/sAQ0uLGlx1izC5sTq
m5idX9KdoXoF++3UpZvmJO3OvOYWFjU5UKZj/xigpuVuRb24QX/2+/+X/vD5Q+q7K91bXD2h+6bu
zM6odX7ZDABdz/YAYP3vDG/duqXe3l719fWpr39Yo+M18v3fr2nLfrOwh53Q68+9piuuKTXFbNLv
/fH/0E9efV0v/+/v6EdHQxQZFKrLKeVKDt6jFw5e1z3NKycyQHv2xauiIFz7fbM0MD6svkFz5t58
XS+/c0BRSTHa/t73dabaPDGmq7V13xb5ZdQrPewdvfbqz/T33/2vOhror20HPZU/KI2W+OmY7y6d
DvDVD71T1JITqD9/2Ustsw9VEvFjHfP31rZ9+3W9+yNNVYXI49AWFXfOaWJiUlWXduqVY/GaWvlY
xWE/0tErhWouT9DuTRv1Ly/8ub7/5ru6mpUhj8MJGpqZUNbZ7Xr1Z2/q+e/8F205fV39wxPqM8fG
etCt//czAwAAPJlHA8CfpfepY3xSE8NDGh4e/kZGxiY11Vkhv6MfKOrGoOanR83nJtTfmq09/+Cr
6ukmnfiH/66fbjugzS//VJ5nSjU2M62Rdbb1pKZGhlQzNq0/SupUWsW/gwGgp6fHHgJ6+8wDM1qh
4897KrW6R8sr86pM9tNGrxxVxr6rf3jpAxU0utVQmq7YrKsK9D6m6GQzAEQe0A8OJ2n09oyGq1Pl
Zxblve8fUlJNs4YHB9Q7OKZbTdf10s/3KSrxsj0ARFTOSZNV2uHxgTa+bxZ//4tyu9sVefAH8vbd
p+0Hdql0XOpJ89LBfTsVEuSrfz6crObcU/rrdwLVMjKhtKANOnLcXHbf+8o1w8JA7jFt3/aeSrpm
zQAwpaKIjXrbP1FTd+8q7eiP5HP8hN7d956Ccl1qTT+uPXvf1eXEOO31ua6GXD+9sNdXtR0DSvB+
XvvDE9VtBpdec2xmZmYYAADga3g0APzPtB41DgxrsKfbXnO+kd5+jY+4dMl3hz7wjdfYgvVP2RdU
c3GnntsSrtbRWp14breu1QyprzhS//Tiq0ptHNTYUJ+619veExg2+182MKpvJ7rMAND5bA8AU1NT
6urqsv+3ht09AxocLtPRf9ily7k3NTQ+qs6qNO3d8DPFF9+Q1+uv6oU3NumVV9/UgcRUXfLeqh/9
7Rbt9XhPL3glanBiTNOTfboY8Kr+6ceequ8cVH9fj7r7RzTVcFU/eHWrzhU2KPvySX3/pZf0xoYX
9faxIOWnhuj1FzZo06Y39N0//j/ll1imiKPv6Hsv/Yte/F/f1iub9ios+Iie90xQY3aA/vz142ow
Q0WK73Pyj8vSuYBd+v6//ExvvfCPenXTVpW6zSAyOKie+lz9/NV/1Mtvva7vffv/0cGIywrz3KSX
X31Pr//gf+p7r2xRen6iXvqjDfIJOKpNr76itzZv1vf++D9rU1CqGVxG1d3l1vT0tDIyMhgAAOAJ
rQ4ArWYA6FbDwJD6u9fWm2+of2hUfU3J2rPhef3LG1u1bes7+tlbb+hqpTlpm23UsX/cq8t5DZq4
NawUr+f1dxv3qKRtRIPWmrTO9r6qIbP/pf9eBoDx8XG5XC51dnYabjMMtKoyt0w3m9vl7upWl6tV
5aWpqmg2k1NDniLDwxRxJUsd/QNqq8pTXFS8MguLVFDVaE9H7R0FOrLhDXkHp8o9PKgua7tu84C3
Nyi/8IaqW80E1d2stCsRCou4pKLGXo32tynnYrTCwsJ19lK8KloG1NtUqMuR4Yo6H6fCmgrVVlUq
r6JB7U3Vyi6uUrvZt0Zz+1UNrarKvqAjB3bpnZ+8oj2+AartHlGPu1PdZkpsLI5VRNhZxaWkqKqj
Q61lBboYEarwyHO6mlemdlejMs7FKL2oWqWpcQoPC1XUuUvmNlvswchlrjM5OckAAABfw6MB4H9c
71adeU3u6Xy03nx91mtza2ubcovyFB/qp53vb9O2be/LO+SysnPylJmZoryr2Wpsc5kT2165GsoU
l5ik6haziJuTuvW2+VX1m/0v7h3SHz7rA4D1/wKwfgCwra1N7e3ta1zq6u1Wp6tj9c8d5gB298nt
aperq9f+tbiD/b3q7LD+3KP+wX71dvcYXep1t+t62G798F1v3TALe0+X6/F2OzrV29Ntb8f6uK/f
bGdwwCzUHWprN383YP159XNd5jId7h4NrP25xzzYbjNE9HZ1qsPlVl9PlzrMNt29wxpoLtHxPRv1
8oYN2vD2B0osblVf9+PbdVvvapjtDJiBpcsadMw+r253UP3mfrqsfbG+TWFNpX39a/swaPZrdRut
ra32D0gyAADAk7MGgHP5rfrvqV2qNa+/7vZPrzdfj3UmXlFRoRde+L5+8OKPtcF6/Td+/OI/6/l/
ek7PPfe80rLSNTjQb1/eZa0n/X32uvXL23pSPWb/i7r69QcJHc/uAGD9KmDrHYCRkRE1NzerpaXl
G2tublFbh1s9ZoFub1v983qX+/VpVnNLq3lw176nZJ4UrvbWX9v9sTQ1NdlDkvUzAPwiIAB4MtYA
YP0ioD9J7VadOZHra22Wu7XlG+s2r/XDvT1fqMcs9u5f02192oDZZpG7V/81waXrz+q/ArB+B0BC
QoL9m40enfXi84aGhuxjFBMTo9LSUgYAAHgCH99fVnKZS38Q36G97ZMqcXWr0Ch4Bln7XWy81zqt
P7psBoH6nrVflb/+fX8qB4CVlRX19/fr1KlTSkxM/OTnAfB51rGxfkFRSEiIPQxY/+Ok9Y4pAODz
lpcWNTQ2re3J9fpvV1r03xI69AcJ7c8sa///MKZZh643anL6tn3/1rvflqdyALB+neHdu3ftf/v/
aPG3viWAz3s0BFjvBlj/K2Dr2K13TAEAn2f9P1as/2fM8Pi0cmq6dLXMZf8O/WeVtf/5dd2amJ7R
ymf+Hzmf91QOABZrIbPeCbB+FTB+NevMn8UfAJ6ctUiu3FnSR/eX9YsHK/b3zZ9V1v5/dG/ZPvP/
ssXf8tQOAAAA4F8PAwAAAA7EAAAAgAMxAAAA4EAMAAAAOBADAAAADvS1B4BpMwDcMQOAtQEAAPBs
WTJmv84AMD5zR3Pzq9MDAAB4tliL/9TtBd36qgPAli3v9dz9UDIzgD01AACAZ5O1+H8k6dTpsF89
ALz88svuoOAQBQQG2xMDAAB4dp0OCdPPf/72rx4AiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiI6Ov2G7/x/wEwYm1zvGAejAAAAABJRU5ErkJggg==
[OutputType([string])]
param ()
if ($hostinvocation -ne $null) {
$hostinvocation.MyCommand.path
} else {
$script:MyInvocation.MyCommand.Path
}
}
#
#
function Get-ScriptDirectory {
<#
.SYNOPSIS
Get-ScriptDirectory returns the proper location of the script.
.OUTPUTS
System.String
.NOTES
Returns the correct path within a packaged executable.
#>
[OutputType([string])]
param ()
if ($hostinvocation -ne $null) {
Split-Path $hostinvocation.MyCommand.path
} else {
Split-Path $script:MyInvocation.MyCommand.Path
}
}
#
#
[string]$scriptNameAndPath = Get-ScriptPathAndName
[string]$scriptPath = Get-ScriptDirectory
#
[boolean]$global:sapienExportedScriptFile = $false
#
$global:scriptNameOnly = Split-Path -Path $scriptNameAndPath -Leaf
#
If ($global:scriptNameOnly.EndsWith(".Export.ps1")) {
$global:sapienExportedScriptFile = $true
}
#
$scriptFilenameExtensionONLY = $global:scriptNameOnly.ToUpper().Substring($($global:scriptNameOnly.LastIndexOf(".")) + 1)
#
#
If (-not $global:languageMode.Equals("FULLLANGUAGE") -and $global:PowerShellHostName.ToUpper().Equals("CONSOLEHOST")) {
# This will ONLY kick in if the *.Export.ps1 file is being run in a PowerShell console
# It will be the LAST error message that is thrown
Write-Error -Message "You are NOT running in `"FullLanguage`" mode and this script-Form will NOT work!"
Pause
Exit
}
#
[boolean]$global:isStandaloneExecutable = $false
#
If ($global:PowerShellHostName.ToUpper().Equals("PRIMALSCRIPTHOSTIMPLEMENTATION") -and -not $scriptFilenameExtensionONLY.Equals("EXE")) {
# This is the indicator that this is running in Debug Mode either in PrimalScript or PowerShell Studio
$global:isStandaloneExecutable = $true
}
#
$formTestDGVDataTableTest_Load = {
[int]$global:timesThrough = 0
[int]$global:timesThroughWithoutErrors = 0
[int]$global:timesThroughWithErrors = 0
#
[boolean]$global:isConversionToDataTableBroken = $false
#
[int]$global:conversionFirstBrokeAtTimeThrough = -1
#
$buttonRetryLoadingData.Focus()
#
$formTestDGVDataTableTest.Show()
#
loadDataIntoDataGridView
}
#
#
function loadDataIntoDataGridView() {
$buttonRetryLoadingData.Enabled = $false
$datagridview1.DataSource = $null
#
$global:timesThrough++
#
# This Start-Sleep call is here so that an End-User can see that this function IS running...
Start-Sleep -Seconds 1
#
[string]$message = ""
#
[collections.arraylist]$dataToDisplay = @(Get-ChildItem c:\Windows | Select-Object name, fullname, length, mode)
#
$message += toTheNthDegreeText -value $global:timesThrough
$message += " time through"
$message += "`n`n"
$message += "`$dataToDisplay.GetType(): `"{0}`"" -f $dataToDisplay.GetType()
$message += "`n`n"
$message += "`$dataToDisplay.Count: `"{0:N0}`"" -f $dataToDisplay.Count
$message += "`n`n"
$message += "This is BEFORE the call to the ConvertTo-DataTable()"
#
# Place a Breakpoint at the next possible line of execution in PowerShell Studio after this line
# The breakpoint MUST be AT or BEFORE the ConvertTo-DataTable() call
#
Write-Host ""
Write-Host $message -ForegroundColor 'Green'
#
[void][System.Windows.Forms.MessageBox]::Show($message, "Original object info for: `"`$dataToDisplay`"")
$message = ""
#
$dataToDisplayAsDataTable = ConvertTo-DataTable -InputObject $dataToDisplay
#
# When I put the value: "$dataToDisplayAsDataTable.Count" into the Watch panel for evaluation I got unexpected results
# I NOW KNOW that the property .Count does NOT exist for a DataTable nor does .Length but I did not expect it to cause any errors in a script when added to the Watch panel
# BUT the following method DOES exist and should NOT cause this.
# You can also put this: "$dataToDisplayAsDataTable.GetType()" in the Watch panel and then set a breakpoint AT of BEFORE the ConvertTo-DataTable call
#
$message += toTheNthDegreeText -value $global:timesThrough
$message += " time through"
$message += "`n`n"
$message += "`$dataToDisplayAsDataTable.GetType(): `"{0}`"" -f $dataToDisplayAsDataTable.GetType()
$message += "`n`n"
$message += "`$dataToDisplayAsDataTable.Rows.Count: `"{0:N0}`"" -f $dataToDisplayAsDataTable.Rows.Count
$message += "`n`n"
$message += "`$dataToDisplayAsDataTable.Columns.Count: `"{0:N0}`"" -f $dataToDisplayAsDataTable.Columns.Count
#
$message += "`n`n"
$message += "This is AFTER the call to the ConvertTo-DataTable()"
#
$message += "`n`n"
If ($dataToDisplayAsDataTable -is [System.Data.DataTable]) {
$global:timesThroughWithoutErrors++
$global:isConversionToDataTableBroken = $false
#
$message += "The above object IS the expected type: `"System.Data.DataTable`""
$message += "`n`n"
$message += "The `$datagridview1 will be FILE and WORK AS EXPECTED and desired. :-)"
$neededForegroundColor = 'Green'
} Else {
$global:timesThroughWithErrors++
$global:isConversionToDataTableBroken = $true
If ($global:conversionFirstBrokeAtTimeThrough -eq -1) {
$global:conversionFirstBrokeAtTimeThrough = $global:timesThrough
}
#
$message += "The above object is NOT the expected type! It is: `"{0}`" expected was `"System.Data.DataTable`"" -f $dataToDisplayAsDataTable.GetType()
$message += "`n`n"
$message += "The `$datagridview1 will be MESSED UP and WILL NOT work as expected and desired. :-("
$neededForegroundColor = 'Red'
}
#
If ($global:timesThrough -gt 1) {
$message += "`n`n"
If ($global:timesThroughWithErrors -eq 0) {
$message += "`nHave you tried setting a breakpoint AT or BEFORE the ConvertTo-DataTable() call?"
$message += "`nYou also have to have something in the Watch panel where the `$datagridview1 has to be evaluated."
$message += "`n(Putting either or both of these values `$dataToDisplayAsDataTable.Rows.Count and `$dataToDisplayAsDataTable.Columns.Count in the Watch panel will NOT cause this problem!)"
$message += "`n(BUT `$dataToDisplayAsDataTable.Count THIS WILL! so does `$dataToDisplayAsDataTable.GetType())"
} Else {
If ($global:timesThroughWithoutErrors -eq 0) {
If ($global:scriptNameOnly.EndsWith(".Export.ps1")) {
$message += "Well I have NEVER SEEN this work with this script as an EXPORTed version of this file."
} ElseIf ($global:scriptNameOnly.EndsWith(".Run.ps1")) {
$message += "I have NEVER SEEN this happen in the RUN mode!"
} Else {
$message += "If you have a variable for the `$datagridview1 in the Watch panel that would explain that this a never worked not evem once!"
}
} Else {
If (-not $global:isConversionToDataTableBroken -and $global:conversionFirstBrokeAtTimeThrough -ne -1) {
$message += "Hey the conversion to DataTable IS WORKING again! GREAT!"
} Else {
$message += "I don't think that you will ever see this work again until this underlying problem is fixed"
}
}
}
}
#
[void][System.Windows.Forms.MessageBox]::Show($message, "Results of ConvertTo-DataTable")
#
Write-Host ""
Write-Host $message -ForegroundColor $neededForegroundColor
$message = ""
#
Update-DataGridView -DataGridView $datagridview1 -Item $dataToDisplayAsDataTable
#
$buttonRetryLoadingData.Enabled = $true
$buttonRetryLoadingData.Focus()
}
#
#
function toTheNthDegreeText() {
param
(
[parameter(Mandatory = $true)]
[int]$value
)
[string]$suffix = ""
[string]$result = "{0:N0}" -f $value
#
If ($result.EndsWith("11") -or $result.EndsWith("12") -or $result.EndsWith("13")) {
$suffix = "th"
} Else {
If ($result.EndsWith("1")) {
$suffix = "st"
} elseif ($result.EndsWith("2")) {
$suffix = "nd"
} elseif ($result.EndsWith("3")) {
$suffix = "rd"
} else {
$suffix = "th"
}
}
#
$result += $suffix
#
return $result
}
#
#
#region Control Helper Functions
function Update-DataGridView {
<#
.SYNOPSIS
This functions helps you load items into a DataGridView.
.DESCRIPTION
Use this function to dynamically load items into the DataGridView control.
.PARAMETER DataGridView
The DataGridView control you want to add items to.
.PARAMETER Item
The object or objects you wish to load into the DataGridView's items collection.
.PARAMETER DataMember
Sets the name of the list or table in the data source for which the DataGridView is displaying data.
.PARAMETER AutoSizeColumns
Resizes DataGridView control's columns after loading the items.
#>
Param (
[ValidateNotNull()]
[Parameter(Mandatory = $true)]
[System.Windows.Forms.DataGridView]
$DataGridView,
[ValidateNotNull()]
[Parameter(Mandatory = $true)]
$Item,
[Parameter(Mandatory = $false)]
[string]
$DataMember,
[System.Windows.Forms.DataGridViewAutoSizeColumnsMode]
$AutoSizeColumns = 'None'
)
$DataGridView.SuspendLayout()
$DataGridView.DataMember = $DataMember
#
if ($null -eq $Item) {
$DataGridView.DataSource = $null
} elseif ($Item -is [System.Data.DataSet] -and $Item.Tables.Count -gt 0) {
$DataGridView.DataSource = $Item.Tables[0]
} elseif ($Item -is [System.ComponentModel.IListSource]` -or $Item -is [System.ComponentModel.IBindingList] -or $Item -is [System.ComponentModel.IBindingListView]) {
$DataGridView.DataSource = $Item
} else {
$array = New-Object System.Collections.ArrayList
#
if ($Item -is [System.Collections.IList]) {
$array.AddRange($Item)
} else {
$array.Add($Item)
}
$DataGridView.DataSource = $array
}
#
if ($AutoSizeColumns -ne 'None') {
$DataGridView.AutoResizeColumns($AutoSizeColumns)
}
#
#$DataGridView.AutoSizeRowsMode = 'AllCellsExceptHeaders'
#
#
foreach ($Column in $DataGridView.Columns) {
If ($Column.Name.ToUpper().Equals("LENGTH")) {
# This sets the alignment to the right side
$Column.DefaultCellStyle.Alignment = 'MiddleRight'
# This formats to Currency
$Column.DefaultCellStyle.Format = "d"
# This will AutoSize these columns and they CANNOT be changed by the End-User
#$Column.AutoSizeMode = 'DisplayedCells'
}
}
#
$DataGridView.ResumeLayout()
}
#
function ConvertTo-DataTable {
<#
.SYNOPSIS
Converts objects into a DataTable.
.DESCRIPTION
Converts objects into a DataTable, which are used for DataBinding.
.PARAMETER InputObject
The input to convert into a DataTable.
.PARAMETER Table
The DataTable you wish to load the input into.
.PARAMETER RetainColumns
This switch tells the function to keep the DataTable's existing columns.
.PARAMETER FilterWMIProperties
This switch removes WMI properties that start with an underline.
.EXAMPLE
$DataTable = ConvertTo-DataTable -InputObject (Get-Process)
#>
[OutputType([System.Data.DataTable])]
param
(
$InputObject,
[ValidateNotNull()]
[System.Data.DataTable]
$Table,
[switch]
$RetainColumns,
[switch]
$FilterWMIProperties
)
#
if ($null -eq $Table) {
$Table = New-Object System.Data.DataTable
}
#
if ($null -eq $InputObject) {
$Table.Clear()
return @( ,$Table)
}
#
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()
#
#Empty Data
if ($null -eq $InputObject) {
return
}
#
$object = $null
#find the first non null value
foreach ($item in $InputObject) {
if ($null -ne $item) {
$object = $item
break
}
}
#
# All null then empty
if ($null -eq $object) {
return
}
#
#Get all the properties in order to create the columns
foreach ($prop in $object.PSObject.Get_Properties()) {
#filter out WMI properties
if (-not $FilterWMIProperties -or -not $prop.Name.StartsWith('__')) {
#Get the type from the Definition string
$type = $null
#
if ($null -ne $prop.Value) {
try {
$type = $prop.Value.GetType()
} catch {
Out-Null
}
}
#
# -and [System.Type]::GetTypeCode($type) -ne 'Object')
if ($null -ne $type) {
[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)) {
if (-not [string]::IsNullOrEmpty($prop.Value)) {
$row.Item($prop.Name) = $prop.Value
If ($error[0]) {
"`$item: `"$item`""
"`$prop.Name: `"$($prop.Name)`""
"`$prop.Value: `"$($prop.Value)`""
}
}
}
}
}
[void]$table.Rows.Add($row)
}
}
#
return @( ,$Table)
}
#endregion
$buttonRetryLoadingData_Click={
loadDataIntoDataGridView
}
]]>
144
168
1
System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
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