d0927505-bce3-4101-878a-163688d48ab2
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAFFUSURBVHhe7d0HWBzngT5w3SWXy11yqefkUv53
l1ySSy5OcvH5Ep8Tx4nj3i1bXVbvdBCiiSohehGgBgJRJFBFQgghEEUUAUL03nvvbKW//28GJMsy
jiVbsqXM+/PzPmJ3Z2dnl8XfO7M7MwuIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIj+Ch3/27/92+J/+fa3itevX19sabmj2MLCstjCnGEYhmGYhyIWO4p3
7NhR/NvfPF78+c9/vliM7VL+ss997nO1T/3+9/DxC0TGtXLUtA6iumWAYRiGYZiHJNLYXdHUjbMX
krFyxQp8+ctfxtww/+G+/a1/Lvb2DURJQx8yy1qRWliPNDkNDMMwDMPcp1wpaUJmafM9SYZIenET
Chv6kZKRh/974omPLgDr1q4rvpJXjuzyNlwpakBGcSPDMAzDMPcxmSJxqcU4cvoKwqWcyfj4EfeP
OpuJpJxKuVSUNvYhIHD/RxeAHTusihu6RuTmkCHuyDAMwzDM/Ut2eQviM0oRJQbv1LwqpORWIkUM
3jeTWyWur5Yj/fyByzenu5EqJGWVIvxUOlIL6lHTqUJk1PGPLgDSl/4aRQHIKGlGlrQpQfwrbQ3I
qexATkU7sstaxHVN8m0MwzAMw3yy5FS2IfZyIU4l5OFaVTvSCxtxpagR6UUN8r9XihuRkFWGC6Ik
SGOylAuZZUgQyZBuv5G5+6WJf/MqWuUCkJJfh5oOFY6EH72DAmBhWdzUrRIL1I5ckTyxMJkFFbiU
noeL6ddEm2hEblWHfBvDMAzDMJ8s12u7cD69FKcvXkOeKANpYq09vbBBTlZZK/ZHnIN/YBi8fIPh
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
AIiIiBRmcHCQBYCIiEhpWACIiIgUiAWAiIhIgVgAiIiIFOieFYCpqSl4eXnB1taWYRiGYZgHIHZ2
djh37tzcSP1+96wA9Pf347nnnkNaWhrDMAzDMA9ADh48iDVr1syN1O93zwpAT08PNm3aNHeJiIiI
Pmv19fUwNjaeu/R+96wA9Pb2Yv369XOXiIiI6LNWWlrKAkBERKQ0LABEREQKxAJARESkQCwARERE
CsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBE
RKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwA
RERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArE
AkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESk
QCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERE
RArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJA
RESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAs
AERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQK
xAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQERE
pEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABE
REQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQC
QEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRA
LABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERE
CsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBE
RKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwA
RERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArE
AkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESk
QCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERE
RArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJA
RESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAs
AERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQK
xAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQERE
pEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABE
REQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQC
QEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRA
LABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERE
CsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBE
RKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwA
RERECsQCQEREpEAsAERERArEAkBERKRALABEREQKxAJARESkQCwARERECsQCQEREpEAsAERERArE
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
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERHRg23Bgv8PreWp50xBMq8AAAAA
SUVORK5CYII=
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAu
MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAA
ACZTeXN0ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkD
AAAADwMAAAB2CgAAAk1TRnQBSQFMAgEBCAEAAWABAAFgAQABEAEAARABAAT/ASEBAAj/AUIBTQE2
BwABNgMAASgDAAFAAwABMAMAAQEBAAEgBgABMP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/
AP8AugADwgH/Az0B/wM9Af8DwgH/MAADwgH/A10B/wOCAf8DwgH/sAADPQH/AwAB/wMAAf8DPQH/
MAADggH/Az0B/wM9Af8DXQH/gAADwgH/Az0B/wM9Af8DwgH/IAADPQH/AwAB/wMAAf8DPQH/A8IB
/wNdAf8DggH/A8IB/xAAA8IB/wM9Af8DPQH/A8IB/wNdAf8DPQH/Az0B/wNdAf8EAAOSAf8DkgH/
A8IB/3AAAz0B/wMAAf8DAAH/Az0B/yAAA8IB/wM9Af8DPQH/A8IB/wOCAf8DPQH/Az0B/wOCAf8Q
AAM9Af8DAAH/AwAB/wM9Af8DwgH/A10B/wOCAf8DwgH/A5IB/wOCAf8DggH/A5IB/3AAAz0B/wMA
Af8DAAH/Az0B/zAAA10B/wM9Af8DPQH/A10B/xAAAz0B/wMAAf8DAAH/Az0B/xAAA5IB/wOSAf8D
kgH/A8IB/3AAA8IB/wM9Af8DPQH/A8IB/zAAA8IB/wNdAf8DggH/A8IB/xAAA8IB/wM9Af8DPQH/
A8IB/xAAA8IB/wOSAf8DkgH/A8IB/zgAA8IB/wM9Af8DPQH/A8IB/zAAA8IB/wOCAf8DXQH/A8IB
/zAAA8IB/wPCAf8DkgH/A8IB/zQAA8IB/wPCAf80AAM9Af8DAAH/AwAB/wM9Af8wAANdAf8DPQH/
Az0B/wNdAf8wAAOSAf8DggH/A4IB/wOSAf8wAAPCAf8DwgH/A8IB/wPCAf8wAAM9Af8DAAH/AwAB
/wM9Af8wAAOCAf8DPQH/Az0B/wOCAf8wAAPCAf8DggH/A5IB/wOSAf8wAAPCAf8DwgH/A8IB/wPC
Af8wAAPCAf8DPQH/Az0B/wPCAf8wAAPCAf8DggH/A10B/wPCAf8wAAPCAf8DkgH/A5IB/wPCAf80
AAPCAf8DwgH/EAADwgH/A8IB/xQAA8IB/wOCAf8DXQH/A8IB/zAAA8IB/wOSAf8DkgH/A8IB/zQA
A8IB/wPCAf9UAAPCAf8DwgH/A8IB/wPCAf8QAANdAf8DPQH/Az0B/wNdAf8wAAOSAf8DggH/A5IB
/wOSAf8wAAPCAf8DwgH/A8IB/wPCAf9QAAPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wOSAf8DwgH/
A4IB/wM9Af8DPQH/A4IB/yQAA8IB/wPCAf8EAAPCAf8DggH/A5IB/wOSAf8wAAPCAf8DwgH/A8IB
/wPCAf9UAAPCAf8DwgH/BAADkgH/A4IB/wOCAf8DkgH/A8IB/wOCAf8DXQH/A8IB/yAAA8IB/wPC
Af8DwgH/A8IB/wPCAf8DkgH/A5IB/wPCAf80AAPCAf8DwgH/ZAADkgH/A5IB/wOSAf8DkgH/MAAD
wgH/A8IB/wPCAf8DwgH/sAADwgH/A5IB/wOSAf8DwgH/NAADwgH/A8IB/7QAA8IB/wPCAf8DkgH/
A8IB/zQAA8IB/wPCAf+0AAOSAf8DggH/A4IB/wOSAf8wAAPCAf8DwgH/A8IB/wPCAf+gAAPCAf8D
XQH/A4IB/wPCAf8DkgH/A5IB/wOSAf8DwgH/BAADwgH/A8IB/xQAA8IB/wPCAf8DkgH/A8IB/wPC
Af8DwgH/A8IB/wPCAf8kAAPCAf8DwgH/dAADggH/Az0B/wM9Af8DggH/A8IB/wOSAf8DkgH/A8IB
/wPCAf8DwgH/A8IB/wPCAf8QAAOSAf8DggH/A4IB/wOSAf8EAAPCAf8DwgH/JAADwgH/A8IB/wPC
Af8DwgH/cAADXQH/Az0B/wM9Af8DggH/EAADwgH/A8IB/wPCAf8DwgH/EAADkgH/A5IB/wOSAf8D
kgH/MAADwgH/A8IB/wPCAf8DwgH/cAADwgH/A10B/wNdAf8DwgH/FAADwgH/A8IB/xQAA8IB/wOS
Af8DkgH/A8IB/zQAA8IB/wPCAf9sAAPCAf8DPQH/Az0B/wPCAf8wAAPCAf8DXQH/A4IB/wPCAf8w
AAPCAf8DwgH/A5IB/wPCAf80AAPCAf8DwgH/NAADPQH/AwAB/wMAAf8DPQH/MAADggH/Az0B/wM9
Af8DXQH/MAADkgH/A4IB/wOCAf8DkgH/MAADwgH/A8IB/wPCAf8DwgH/MAADPQH/AwAB/wMAAf8D
PQH/MAADXQH/Az0B/wM9Af8DggH/MAADkgH/A5IB/wOSAf8DkgH/MAADwgH/A8IB/wPCAf8DwgH/
MAADwgH/Az0B/wM9Af8DwgH/MAADwgH/A10B/wNdAf8DwgH/MAADwgH/A5IB/wOSAf8DwgH/NAAD
wgH/A8IB/3wAA8IB/wM9Af8DPQH/A8IB/zAAA8IB/wNdAf8DggH/A8IB/zAAA8IB/wPCAf8DkgH/
A8IB/xAAA8IB/wM9Af8DPQH/A8IB/1AAAz0B/wMAAf8DAAH/Az0B/zAAA4IB/wM9Af8DPQH/A10B
/zAAA5IB/wOCAf8DggH/A5IB/xAAAz0B/wMAAf8DAAH/Az0B/1AAAz0B/wMAAf8DAAH/Az0B/zAA
A10B/wM9Af8DPQH/A4IB/wOSAf8DPQH/Az0B/wPCAf8gAAOSAf8DkgH/A5IB/wOSAf8DwgH/A10B
/wOCAf8DwgH/Az0B/wMAAf8DAAH/Az0B/1AAA8IB/wM9Af8DPQH/A8IB/zAAA8IB/wOCAf8DXQH/
A8IB/wM9Af8DAAH/AwAB/wM9Af8gAAPCAf8DkgH/A5IB/wPCAf8DggH/Az0B/wM9Af8DXQH/A8IB
/wM9Af8DPQH/A8IB/6AAAz0B/wMAAf8DAAH/Az0B/zAAA10B/wM9Af8DPQH/A4IB/7AAA8IB/wM9
Af8DPQH/A8IB/zAAA8IB/wOCAf8DXQH/A8IB/xgAAUIBTQE+BwABPgMAASgDAAFAAwABMAMAAQEB
AAEBBQABgAEBFgAD/4EABP8B/AE/AfwBPwT/AfwBPwH8AT8D/wHDAfwBAwHAASMD/wHDAfwBAwHA
AQMD/wHDAf8DwwP/AcMB/wPDAf8B8AH/AfAB/wHwAf8B+QH/AfAB/wHwAf8B8AH/AfAB/wHwAf8B
8AH/AfAB/wHwAf8B8AH/AfAB/wHwAf8B+QHnAcMB/wHDAf8B5wL/AsMB/wHDAf8BwwL/AcABAwH+
AUMB/wHDAv8B5AEDAfwBAwH/AecC/wH8AT8B/AE/BP8B/AE/Af4BfwT/AfwBPwH+AX8E/wH8AT8B
/AE/BP8BwAEnAcABPwHnA/8BwAEDAcIBfwHDA/8DwwH/AcMD/wHDAecBwwH/AecD/wEPAf8BDwH/
AQ8B/wGfAf8BDwH/AQ8B/wEPAf8BDwH/AQ8B/wEPAf8BDwH/AQ8B/wEPAf8BDwH/AQ8B/wGfA/8B
wwH/AcMB/wLDAv8BwwH/AcMB/wLDAv8BwwH/AcABPwHAAQMC/wHDAf8BwAE/AcABAwT/AfwBPwH8
AT8E/wH8AT8B/AE/Cw==
Transparent
timerJobTracker_Tick
openfiledialog1
#[System.Windows.Forms.MessageBox]::Show(@($ComputersFromFile).Count)
$buttonADCancel.Enabled = $true
$textboxStatus.AppendText("Action - Active Directory Look Up:`r`n")
$textboxStatus.AppendText("****************************************`r`n")
$textboxStatus.AppendText("Pulling Active Directory information.`r`n`r`n")
$statusbar1.Text = "Action: Pulling Active Directory information."
#Create a New Job using the Job Tracker
$jobscript = {
Param ($ADSearchBase,
$ADServerSearch,
$AD_ID,
$AD_Identity,
$ComputersFromFile) #Pass any arguments using the ArgumentList parameter
#[string]$ADFilter = 'OperatingSystem -Like "Windows *Server* *2008*" -and enabled -eq $true'
$ADRlts = @()
$ADFailed = @()
$ADResults = @()
$ADFailedComs = @()
if ($AD_ID -eq $true)
{
if (@($ComputersFromFile).Count -eq 0)
{
try
{
$ADResults = Get-ADComputer -Identity $AD_Identity -Properties Name, OperatingSystem, OperatingSystemVersion, IPv4Address, Enabled
}
catch
{
#$ADError = $_.Exception.Message
$ADFailed = "$AD_Identity, does not exist in Active Directory or look up timed out.`r`n"
$ADFailedComs += $ADFailed
}
}
else
{
foreach ($Computer in $ComputersFromFile)
{
$Computer.Trim()
$DSCS = $Computer.split('.')
If (($DSCS.Count) -ge 1)
{
$Computer = $DSCS[0]
}
try
{
$ADRlts = Get-ADComputer -Identity $Computer -Properties Name, OperatingSystem, OperatingSystemVersion, IPv4Address, Enabled
$ADResults += $ADRlts
}
catch
{
# Track Computer Objects that are not in Active Directory for multiple computers objects
$ADFailed = "$Computer, does not exist in Active Directory or look up timed out.`r`n"
$ADFailedComs += $ADFailed
}
}
}
}
else
{
if ([string]::IsNullOrEmpty($Cred))
{
try
{
[string]$ADFilter = 'OperatingSystem -Like "Windows *Server*" -and enabled -eq $true'
$ADResults = Get-ADComputer -SearchBase $ADSearchBase -Server $ADServerSearch -Filter $ADFilter -Properties Name, OperatingSystem, OperatingSystemVersion, IPv4Address, Enabled | Sort Name
}
catch
{
$ADError = $_.Exception.Message
}
}
else
{
try
{
[string]$ADFilter = 'OperatingSystem -Like "Windows *Server*" -and enabled -eq $true'
$ADResults = Get-ADComputer -SearchBase $ADSearchBase -Server $ADServerSearch -Credential $Cred -Filter $ADFilter -Properties Name, OperatingSystem, OperatingSystemVersion, IPv4Address, Enabled | Sort Name
}
catch
{
$ADError = $_.Exception.Message
}
}
}
# Return the output and the exitcode using a hashtable
New-Object -TypeName PSCustomObject -Property @{ ADInfo = $ADResults; ADError = $ADError; ADLocal = $AD_ID; ADFailedComs = $ADFailedComs}
}
$completedscript = {
Param ($Job)
$results = Receive-Job -Job $Job
if ([string]::IsNullOrEmpty($results.'ADError'))
{
$result = $results.'ADInfo' | Select-Object Name, OperatingSystem, OperatingSystemVersion, IPv4Address, Enabled
# Update Logging with Failed Computer Objects from a user importing a file.
if (@($results.'ADFailedComs').Count -eq 0 -or $results.'ADFailedComs' -eq $null)
{
if ($results.'ADLocal' -eq $true)
{
Update-DataGridView $datagridview1 $result
}
else
{
$datagridview1.DataSource = [System.Collections.ArrayList]$result
}
$textboxStatus.AppendText("Success - Active Directory Look Up:`r`n")
$textboxStatus.AppendText("*******************************************`r`n")
$textboxStatus.AppendText("Active Directory look up was successful.`r`n`r`n")
$statusbar1.Text = "Success: Active Directory look up was successful."
}
else
{
if ($results.'ADLocal' -eq $true)
{
if (@($result).Count -eq 0)
{
$textboxStatus.AppendText("Error - Active Directory Look Up failed on the following Computer Objects:`r`n")
$textboxStatus.AppendText("***************************************************************************************`r`n")
$textboxStatus.AppendText($results.'ADFailedComs')
$textboxStatus.AppendText("`r`n")
$statusbar1.Text = "Error: Active Directory look up was not successful, check Logging tab."
}
else
{
Update-DataGridView $datagridview1 $result
if (@($results.'ADFailedComs').Count -ge 1)
{
$textboxStatus.AppendText("Error - Active Directory Look Up failed on the following Computer Objects:`r`n")
$textboxStatus.AppendText("***************************************************************************************`r`n")
$textboxStatus.AppendText($results.'ADFailedComs')
$textboxStatus.AppendText("`r`n")
$statusbar1.Text = "Error: Active Directory look up was not successful, check Logging tab."
}
}
}
else
{
$datagridview1.DataSource = [System.Collections.ArrayList]$result
}
}
$buttonADExecute.ImageIndex = -1
$buttonADExecute.Enabled = $true
$buttonADCancel.Enabled = $false
$buttonADCancel.Visible = $false
$comboboxLoadComObj.Enabled = $true
$checkboxPromptForCredentials.Enabled = $true
$checkboxPromptForDomainOU.Enabled = $true
}
else
{
$buttonADExecute.ImageIndex = -1
$buttonADExecute.Enabled = $true
$buttonADCancel.Enabled = $false
$buttonADCancel.Visible = $false
$comboboxLoadComObj.Enabled = $true
$checkboxPromptForCredentials.Enabled = $true
$checkboxPromptForDomainOU.Enabled = $true
$textboxStatus.AppendText("Error - Active Directory Look Up:`r`n")
$textboxStatus.AppendText("****************************************`r`n")
$textboxStatus.AppendText("$results.'ADError'`r`n`r`n")
$statusbar1.Text = "Error: Active Directory look up was not successful, check Logging tab."
}
}
$updatescript = {
Param ($Job)
#$results = Receive-Job -Job $Job -Keep
#Animate the Button
if ($null -ne $buttonADExecute.ImageList)
{
if ($buttonADExecute.ImageIndex -lt $buttonADExecute.ImageList.Images.Count - 1)
{
$buttonADExecute.ImageIndex += 1
}
else
{
$buttonADExecute.ImageIndex = 0
}
}
}
Add-JobTracker -Name 'JobName' -JobScript $jobscript -CompletedScript $completedscript -UpdateScript $updatescript -ArgumentList $ADSearchBase, $ADServerSearch, $AD_ID, $AD_Identity, $ComputersFromFile, $Cred
}
}
$jobTracker_FormClosed=[System.Windows.Forms.FormClosedEventHandler]{
#Event Argument: $_ = [System.Windows.Forms.FormClosedEventArgs]
#Stop any pending jobs
Stop-JobTracker
}
$timerJobTracker_Tick={
Update-JobTracker
}
#region Job Tracker
$JobTrackerList = New-Object System.Collections.ArrayList
function Add-JobTracker
{
<#
.SYNOPSIS
Add a new job to the JobTracker and starts the timer.
.DESCRIPTION
Add a new job to the JobTracker and starts the timer.
.PARAMETER Name
The name to assign to the Job
.PARAMETER JobScript
The script block that the Job will be performing.
Important: Do not access form controls from this script block.
.PARAMETER ArgumentList
The arguments to pass to the job
.PARAMETER CompleteScript
The script block that will be called when the job is complete.
The job is passed as an argument. The Job argument is null when the job fails.
.PARAMETER UpdateScript
The script block that will be called each time the timer ticks.
The job is passed as an argument. Use this to get the Job's progress.
.EXAMPLE
Add-JobTracker -Name 'JobName' `
-JobScript {
Param($Argument1)#Pass any arguments using the ArgumentList parameter
#Important: Do not access form controls from this script block.
Get-WmiObject Win32_Process -Namespace "root\CIMV2"
}`
-CompletedScript {
Param($Job)
$results = Receive-Job -Job $Job
}`
-UpdateScript {
Param($Job)
#$results = Receive-Job -Job $Job -Keep
}
.LINK
#>
Param(
[ValidateNotNull()]
[Parameter(Mandatory=$true)]
[string]$Name,
[ValidateNotNull()]
[Parameter(Mandatory=$true)]
[ScriptBlock]$JobScript,
$ArgumentList = $null,
[ScriptBlock]$CompletedScript,
[ScriptBlock]$UpdateScript)
#Start the Job
$job = Start-Job -Name $Name -ScriptBlock $JobScript -ArgumentList $ArgumentList
if($null -ne $job)
{
#Create a Custom Object to keep track of the Job & Script Blocks
$members = @{ 'Job' = $Job;
'CompleteScript' = $CompletedScript;
'UpdateScript' = $UpdateScript}
$psObject = New-Object System.Management.Automation.PSObject -Property $members
[void]$JobTrackerList.Add($psObject)
#Start the Timer
if(-not $timerJobTracker.Enabled)
{
$timerJobTracker.Start()
}
}
elseif($null -ne $CompletedScript)
{
#Failed
Invoke-Command -ScriptBlock $CompletedScript -ArgumentList $null
}
}
function Update-JobTracker
{
<#
.SYNOPSIS
Checks the status of each job on the list.
#>
#Poll the jobs for status updates
$timerJobTracker.Stop() #Freeze the Timer
for($index = 0; $index -lt $JobTrackerList.Count; $index++)
{
$psObject = $JobTrackerList[$index]
if($null -ne $psObject)
{
if($null -ne $psObject.Job)
{
if ($psObject.Job.State -eq 'Blocked')
{
#Try to unblock the job
Receive-Job $psObject.Job | Out-Null
}
elseif($psObject.Job.State -ne 'Running')
{
#Call the Complete Script Block
if($null -ne $psObject.CompleteScript)
{
#$results = Receive-Job -Job $psObject.Job
Invoke-Command -ScriptBlock $psObject.CompleteScript -ArgumentList $psObject.Job
}
$JobTrackerList.RemoveAt($index)
Remove-Job -Job $psObject.Job
$index-- #Step back so we don't skip a job
}
elseif($null -ne $psObject.UpdateScript)
{
#Call the Update Script Block
Invoke-Command -ScriptBlock $psObject.UpdateScript -ArgumentList $psObject.Job
}
}
}
else
{
$JobTrackerList.RemoveAt($index)
$index-- #Step back so we don't skip a job
}
}
if($JobTrackerList.Count -gt 0)
{
$timerJobTracker.Start()#Resume the timer
}
}
function Stop-JobTracker
{
<#
.SYNOPSIS
Stops and removes all Jobs from the list.
#>
#Stop the timer
$timerJobTracker.Stop()
#Remove all the jobs
while($JobTrackerList.Count -gt 0)
{
$job = $JobTrackerList[0].Job
$JobTrackerList.RemoveAt(0)
Stop-Job $job
Remove-Job $job
}
}
#endregion
#region Created Helper Functions
function ADSearchBaseCheck
{
#param
#(
# [Parameter(Mandatory = $false)]
# [string]$AltADSearchBase
#)
Try
{
$v_WMI_AD_DomainName = (Get-WmiObject Win32_ComputerSystem).Domain
$v_AD_DomainName = $v_WMI_AD_DomainName.split('.')
$v_Ar_Searchbase = @()
ForEach ($v_AD_DN_V in $v_AD_DomainName)
{
$v_AD_DN_New = "DC=" + $v_AD_DN_V
$v_Ar_Searchbase += $v_AD_DN_New
}
$v_AD_SearchBase = $null
ForEach ($v_Ar_SB in $v_Ar_Searchbase)
{
$v_AD_SearchBase = $v_AD_SearchBase + $v_Ar_SB + ","
}
$v_AD_SearchBase = $v_AD_SearchBase.Substring(0, $v_AD_SearchBase.Length - 1)
}
Catch
{
$textboxStatus.AppendText("Unable to retrieve the Domain Name the application is running on.`r`n")
$v_AD_SearchBase = ''
}
Return $v_AD_SearchBase
}
Function Show-Inputbox
{
Param ([string]$message = $(Throw "You must enter a prompt message"),
[string]$title = "Input",
[string]$default
)
[reflection.assembly]::loadwithpartialname("microsoft.visualbasic") | Out-Null
[microsoft.visualbasic.interaction]::InputBox($message, $title, $default)
}
#endregion
#region Control Helper Functions
function Update-ComboBox
{
<#
.SYNOPSIS
This functions helps you load items into a ComboBox.
.DESCRIPTION
Use this function to dynamically load items into the ComboBox control.
.PARAMETER ComboBox
The ComboBox control you want to add items to.
.PARAMETER Items
The object or objects you wish to load into the ComboBox's Items collection.
.PARAMETER DisplayMember
Indicates the property to display for the items in this control.
.PARAMETER Append
Adds the item(s) to the ComboBox without clearing the Items collection.
.EXAMPLE
Update-ComboBox $combobox1 "Red", "White", "Blue"
.EXAMPLE
Update-ComboBox $combobox1 "Red" -Append
Update-ComboBox $combobox1 "White" -Append
Update-ComboBox $combobox1 "Blue" -Append
.EXAMPLE
Update-ComboBox $combobox1 (Get-Process) "ProcessName"
.NOTES
Additional information about the function.
#>
param
(
[Parameter(Mandatory = $true)]
[ValidateNotNull()]
[System.Windows.Forms.ComboBox]
$ComboBox,
[Parameter(Mandatory = $true)]
[ValidateNotNull()]
$Items,
[Parameter(Mandatory = $false)]
[string]
$DisplayMember,
[switch]
$Append
)
if (-not $Append)
{
$ComboBox.Items.Clear()
}
if ($Items -is [Object[]])
{
$ComboBox.Items.AddRange($Items)
}
elseif ($Items -is [System.Collections.IEnumerable])
{
$ComboBox.BeginUpdate()
foreach ($obj in $Items)
{
$ComboBox.Items.Add($obj)
}
$ComboBox.EndUpdate()
}
else
{
$ComboBox.Items.Add($Items)
}
$ComboBox.DisplayMember = $DisplayMember
}
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.DataGridViewAutoSizeColumnMode]$AutoSizeColumns = 'None'
)
$DataGridView.SuspendLayout()
$DataGridView.DataMember = $DataMember
if ($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.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(
[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
$comboboxLoadComObj_SelectedIndexChanged={
#TODO: Place custom script here
if ($comboboxLoadComObj.SelectedItem -eq "Local Machine")
{
$labelOptions.Visible = $false
$checkboxPromptForCredentials.Visible = $false
$checkboxPromptForDomainOU.Visible = $false
$statusbar1.Text = "Notification: Computer Container 'Local Machine' selected."
$textboxStatus.AppendText("Notification - Computer Container dropdown:`r`n")
$textboxStatus.AppendText("*****************************************************`r`n")
$textboxStatus.AppendText("Computer Container 'Local Machine' selected.`r`n`r`n")
}
elseif ($comboboxLoadComObj.SelectedItem -eq "Active Directory")
{
# reset the checks for OU and cred checkboxes
$checkboxPromptForCredentials.Checked = $false
$checkboxPromptForDomainOU.Checked = $false
$labelOptions.Visible = $true
$checkboxPromptForCredentials.Visible = $true
$checkboxPromptForDomainOU.Visible = $true
$statusbar1.Text = "Notification: Computer Container 'Active Directory' selected."
$textboxStatus.AppendText("Notification - Computer Container dropdown:`r`n")
$textboxStatus.AppendText("*****************************************************`r`n")
$textboxStatus.AppendText("Computer Container 'Active Directory' selected.`r`n`r`n")
}
elseif ($comboboxLoadComObj.SelectedItem -eq "Import From File")
{
$labelOptions.Visible = $false
$checkboxPromptForCredentials.Visible = $false
$checkboxPromptForDomainOU.Visible = $false
$statusbar1.Text = "Notification: Computer Container 'Import From File' selected."
$textboxStatus.AppendText("Notification - Computer Container dropdown:`r`n")
$textboxStatus.AppendText("*****************************************************`r`n")
$textboxStatus.AppendText("Computer Container 'Import From File' selected.`r`n`r`n")
}
elseif ($comboboxLoadComObj.SelectedItem -eq "Enter Computer Object")
{
$labelOptions.Visible = $false
$checkboxPromptForCredentials.Visible = $false
$checkboxPromptForDomainOU.Visible = $false
$statusbar1.Text = "Notification: Computer Container 'Enter Computer Object' selected."
$textboxStatus.AppendText("Notification - Computer Container dropdown:`r`n")
$textboxStatus.AppendText("*****************************************************`r`n")
$textboxStatus.AppendText("Computer Container 'Enter Computer Object' selected.`r`n`r`n")
}
}
$buttonADCancel_Click={
#TODO: Place custom script here
$buttonADCancel.Enabled = $false
Stop-JobTracker
$textboxStatus.AppendText("Cancelled - Active Directory Look Up:`r`n")
$textboxStatus.AppendText("*********************************************`r`n")
$textboxStatus.AppendText("Active Directory look up was cancelled.`r`n`r`n")
sleep -Seconds 1
$buttonADCancel.Visible = $false
$buttonADExecute.ImageIndex = -1
$buttonADExecute.Enabled = $true
$comboboxLoadComObj.Enabled = $true
}
]]>
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