-
Notifications
You must be signed in to change notification settings - Fork 0
/
V1
5131 lines (4974 loc) · 337 KB
/
V1
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#------------------------------------------------------------------------
# SPIDER DEPLOY - PIERRE C
#required :
#- SCCM must be installed in your computer.
#- You must change setting in ps1
#------------------------------------
# VARIABLES
#----------------------------------------------
$script:site = "YourCODESITE"
$script:Server = "YourServerSCCM"
#----------------------------------------------
# Generated Form Function
#----------------------------------------------
function Show-Install-Logiciels-SccmUS_psf {
#----------------------------------------------
#region Import the Assemblies
#----------------------------------------------
[void][reflection.assembly]::Load('System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')
[void][reflection.assembly]::Load('System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')
[void][reflection.assembly]::Load('System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
#endregion Import Assemblies
#----------------------------------------------
#region Generated Form Objects
#----------------------------------------------
[System.Windows.Forms.Application]::EnableVisualStyles()
$formSCCMSpiderDeployV13 = New-Object 'System.Windows.Forms.Form'
$picturebox4 = New-Object 'System.Windows.Forms.PictureBox'
$labelLiteVersion20012020P = New-Object 'System.Windows.Forms.Label'
$groupbox3 = New-Object 'System.Windows.Forms.GroupBox'
$checkedlistbox2 = New-Object 'System.Windows.Forms.CheckedListBox'
$Oui = New-Object 'System.Windows.Forms.Button'
$picturebox2 = New-Object 'System.Windows.Forms.PictureBox'
$labelNb100 = New-Object 'System.Windows.Forms.Label'
$checkedlistbox1 = New-Object 'System.Windows.Forms.CheckedListBox'
$groupbox1 = New-Object 'System.Windows.Forms.GroupBox'
$Textdebug = New-Object 'System.Windows.Forms.Label'
$buttonSearch = New-Object 'System.Windows.Forms.Button'
$EPOC = New-Object 'System.Windows.Forms.Label'
$textbox1 = New-Object 'System.Windows.Forms.TextBox'
$groupbox2 = New-Object 'System.Windows.Forms.GroupBox'
$picturebox1 = New-Object 'System.Windows.Forms.PictureBox'
$checkboxInstalled = New-Object 'System.Windows.Forms.CheckBox'
$textbox2 = New-Object 'System.Windows.Forms.TextBox'
$labelcoucocuc = New-Object 'System.Windows.Forms.Label'
$tooltip1 = New-Object 'System.Windows.Forms.ToolTip'
$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
#endregion Generated Form Objects
#----------------------------------------------
# User Generated Script
#----------------------------------------------
$formSCCMSpiderDeployV13_Load={
#TODO: Initialize Form Controls here
Import-Module "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1"
Set-Location "$($script:site):\"
#INIT
$groupbox3.Location = '800, 200';
$labelcoucocuc.Text = "! research computer !"
$listXXXX = Get-CimInstance -Namespace "Root\SMS\Site_$script:site" -ClassName "SMS_Collection" -Filter "CollectionType='2'" -ComputerName $script:Server | Select-Object name, ObjectPath,CollectionID | sort name
#$listXXXX =Get-CimInstance -Namespace "Root\SMS\Site_CMP" -ClassName "SMS_Collection" -Filter "CollectionType='2'" -ComputerName dctsva145 | Select-Object name, ObjectPath,CollectionID | sort name
$script:AllApplicationsNameId= $listXXXX;
$checkedlistbox1.Items.Clear();
$checkedlistbox2.Items.Clear();
foreach ($item in $listXXXX) {
$checkedlistbox1.Items.Add($item.name);
}
$labelNb100.Text = "Nb : " + $listXXXX.count;
if ($listXXXX.count -eq 0) { $Textdebug.Text = "ERROR..."}
}
#region Control Helper Functions
function Show-NotifyIcon
{
<#
.SYNOPSIS
Displays a NotifyIcon's balloon tip message in the taskbar's notification area.
.DESCRIPTION
Displays a NotifyIcon's a balloon tip message in the taskbar's notification area.
.PARAMETER NotifyIcon
The NotifyIcon control that will be displayed.
.PARAMETER BalloonTipText
Sets the text to display in the balloon tip.
.PARAMETER BalloonTipTitle
Sets the Title to display in the balloon tip.
.PARAMETER BalloonTipIcon
The icon to display in the ballon tip.
.PARAMETER Timeout
The time the ToolTip Balloon will remain visible in milliseconds.
Default: 0 - Uses windows default.
#>
param(
[Parameter(Mandatory = $true, Position = 0)]
[ValidateNotNull()]
[System.Windows.Forms.NotifyIcon]$NotifyIcon,
[Parameter(Mandatory = $true, Position = 1)]
[ValidateNotNullOrEmpty()]
[String]$BalloonTipText,
[Parameter(Position = 2)]
[String]$BalloonTipTitle = '',
[Parameter(Position = 3)]
[System.Windows.Forms.ToolTipIcon]$BalloonTipIcon = 'None',
[Parameter(Position = 4)]
[int]$Timeout = 0
)
if($null -eq $NotifyIcon.Icon)
{
#Set a Default Icon otherwise the balloon will not show
$NotifyIcon.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon([System.Windows.Forms.Application]::ExecutablePath)
}
$NotifyIcon.ShowBalloonTip($Timeout, $BalloonTipTitle, $BalloonTipText, $BalloonTipIcon)
}
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)
}
function Update-ListBox
{
<#
.SYNOPSIS
This functions helps you load items into a ListBox or CheckedListBox.
.DESCRIPTION
Use this function to dynamically load items into the ListBox control.
.PARAMETER ListBox
The ListBox control you want to add items to.
.PARAMETER Items
The object or objects you wish to load into the ListBox's Items collection.
.PARAMETER DisplayMember
Indicates the property to display for the items in this control.
.PARAMETER Append
Adds the item(s) to the ListBox without clearing the Items collection.
.EXAMPLE
Update-ListBox $ListBox1 "Red", "White", "Blue"
.EXAMPLE
Update-ListBox $listBox1 "Red" -Append
Update-ListBox $listBox1 "White" -Append
Update-ListBox $listBox1 "Blue" -Append
.EXAMPLE
Update-ListBox $listBox1 (Get-Process) "ProcessName"
.NOTES
Additional information about the function.
#>
param
(
[Parameter(Mandatory = $true)]
[ValidateNotNull()]
[System.Windows.Forms.ListBox]
$ListBox,
[Parameter(Mandatory = $true)]
[ValidateNotNull()]
$Items,
[Parameter(Mandatory = $false)]
[string]
$DisplayMember,
[switch]
$Append
)
if (-not $Append)
{
$listBox.Items.Clear()
}
if ($Items -is [System.Windows.Forms.ListBox+ObjectCollection])
{
$listBox.Items.AddRange($Items)
}
elseif ($Items -is [Array])
{
$listBox.BeginUpdate()
foreach ($obj in $Items)
{
$listBox.Items.Add($obj)
}
$listBox.EndUpdate()
}
else
{
$listBox.Items.Add($Items)
}
$listBox.DisplayMember = $DisplayMember
}
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
}
#endregion
$buttonSearch_Click = {
$labelcoucocuc.Text = "! choose from the list !"
#TODO: Place custom script here
#$ids = Get-WmiObject -ComputerName $Server -Namespace "ROOT\SMS\site_$site" -Query "SELECT * FROM SMS_FullCollectionMembership WHERE SMSClient.Name='$ancienposte' order by name" | select CollectionID
$checkedlistbox1.Items.Clear();
$checkedlistbox2.Items.Clear();
$groupbox3.Location = '288, 200';
#Set-Location($site + ":")
$Textdebug.Text = "Loading..."
$posteName = $textbox1.text;
Try
{
$ids = Get-WmiObject -ComputerName $script:Server -Namespace "ROOT\SMS\site_$script:site" -Query "SELECT * FROM SMS_FullCollectionMembership WHERE SMSClient.Name='$posteName' order by name" | select CollectionID -ErrorAction Stop
$script:MeslogicielsID = $ids;
}
Catch
{
$Textdebug.Text += "Error ! | " + $Error.Exception.Message;
exit 0
}
$Textdebug.Text = "";
&ActualisationApplication
}
function ActualisationApplication ()
{
$checkedlistbox1.Items.Clear();
$count = 0;
foreach ($item in $script:AllApplicationsNameId)
{
if ([string]$item.name -match [string]$textbox2.Text)
{
$count += 1;
if ($script:MeslogicielsID.collectionID -ccontains $item.collectionID)
{
$ix = $checkedlistbox1.Items.Add($item.name);
$checkedlistbox1.SetItemChecked($ix, $true)
}
else
{ if (!$checkboxInstalled.checked)
{ $checkedlistbox1.Items.Add($item.name); }
}
}
}
$labelNb100.Text = "Nb : " + $count;
}
$textbox2_KeyUp = [System.Windows.Forms.KeyEventHandler]{
#Event Argument: $_ = [System.Windows.Forms.KeyEventArgs]
if ($_.KeyCode -eq 'Enter')
{
&ActualisationApplication
}
}
$textbox1_KeyUp = [System.Windows.Forms.KeyEventHandler]{
#Event Argument: $_ = [System.Windows.Forms.KeyEventArgs]
if ($_.KeyCode -eq 'Enter')
{
&$buttonSearch_Click
}
}
$checkboxInstalled_CheckedChanged={
&ActualisationApplication
}
$checkedlistbox1_ItemCheck=[System.Windows.Forms.ItemCheckEventHandler]{
# Prepare for add in checkbox2 with collectionID
$lignNum = $checkedlistbox1.SelectedIndex;
#$LignName = $checkedlistbox1.SelectedItem + " | " + $checkedlistbox3.items[$lignNum].ToString()
$LignName = $checkedlistbox1.SelectedItem
$pasaction = 0;
#Verif si pas de nom identique sinon effacer
foreach ($itemT2 in $checkedlistbox2.items)
{
# Effacement si ajout 2 fois le meme collection
if ($itemT2.ToString() -eq $LignName)
{
$checkedlistbox2.Items.Remove($itemT2.ToString())
$pasaction = 1;
break
}
}
if ($script:AllApplicationsNameId.ForEach('Name') -eq $checkedlistbox1.SelectedItem -and $pasaction -eq 0)
{
#Write-Host "YOURID>>> "$script:AllApplicationsNameId.collectionID
$ix = $checkedlistbox2.Items.Add($LignName);
if ($_.NewValue -eq 'Unchecked') { $checkedlistbox2.SetItemChecked($ix, $false) }
else { $checkedlistbox2.SetItemChecked($ix, $true)}
}
}
$Oui_Click={
[string]$posteName = $textbox1.text;
$groupbox3.Location = '600, 200';
$labelcoucocuc.Text = "Computer : " + $posteName +"`n"
$labelcoucocuc.Text += "Waiting..."+ "`n"
foreach ($itemT3 in $checkedlistbox2)
{
[string]$CollectionName = $itemT3;
#ADD_POSTE_TO_COLLECTION($posteName, $CollectionName)
}
$TotalCount = $checkedlistbox2.Items.Count;
for ($i = 0; $i -lt $TotalCount; $i++)
{
[string]$CollectionName = $checkedlistbox2.Items[$i]
#$InstallorDelete= $checkedlistbox2.GetItemChecked($i)
$InstallorDelete = $checkedlistbox2.GetItemCheckState($i)
Write-Host $i">>>" $CollectionName ">>>asXX>>>"$InstallorDelete
if ($posteName -ne "") {
ADD_POSTE_TO_COLLECTION($i)
}
}
#Met a 0
$labelcoucocuc.Text += "`nthe update is finished"
$checkedlistbox1.Items.Clear();
$checkedlistbox2.Items.Clear();
&ActualisationApplication
#TODO: Place custom script here
}
function ADD_POSTE_TO_COLLECTION ($idd)
{
$CollectionName = $checkedlistbox2.Items[$idd]
$InstallorDelete = $checkedlistbox2.GetItemCheckState($idd)
$posteName = $textbox1.text;
$PCID = Get-CMDevice -Name $posteName
Write-Host $InstallorDelete" ->>>> "$posteName" -|||| "$collectionNAME;
if ($InstallorDelete -eq "Checked")
{
Write-Host "Add to collection " $collectionNAME
$labelcoucocuc.Text += "ajout : " + $collectionNAME+ "`n"
#if ($PCID -ne $null){
$IDressourcePC = $(get-cmdevice -name "$posteName").ResourceID
Add-CMDeviceCollectionDirectMembershipRule -CollectionName $collectionNAME -ResourceID $IDressourcePC
#} else { $labelcoucocuc.Text = "Erreur nom d'ordinateur" }
}
if ($InstallorDelete -eq "UnChecked")
{
$labelcoucocuc.Text += "remove to collection : " + $collectionNAME + "`n"
Remove-CMDeviceCollectionDirectMembershipRule -CollectionName $collectionNAME -ResourceName $posteName -Force
}
}
$buttonMiseAJourDesLogiciel_Click={
#TODO: Place custom script here
$labelcoucocuc.Text = "..."
$groupbox3.Location = '3, 210';
}
$button1_Click={
#TODO: Place custom script here
}
$buttonAnnuler_Click = {
$checkedlistbox1.Items.Clear();
$checkedlistbox2.Items.Clear();
&ActualisationApplication
$groupbox3.Location = '600, 200';
}
# --End User Generated Script--
#----------------------------------------------
#region Generated Events
#----------------------------------------------
$Form_StateCorrection_Load=
{
#Correct the initial state of the form to prevent the .Net maximized form issue
$formSCCMSpiderDeployV13.WindowState = $InitialFormWindowState
}
$Form_Cleanup_FormClosed=
{
#Remove all event handlers from the controls
try
{
$Oui.remove_Click($Oui_Click)
$checkedlistbox1.remove_ItemCheck($checkedlistbox1_ItemCheck)
$buttonSearch.remove_Click($buttonSearch_Click)
$textbox1.remove_KeyUp($textbox1_KeyUp)
$checkboxInstalled.remove_CheckedChanged($checkboxInstalled_CheckedChanged)
$textbox2.remove_KeyUp($textbox2_KeyUp)
$formSCCMSpiderDeployV13.remove_Load($formSCCMSpiderDeployV13_Load)
$formSCCMSpiderDeployV13.remove_Load($Form_StateCorrection_Load)
$formSCCMSpiderDeployV13.remove_FormClosed($Form_Cleanup_FormClosed)
}
catch { Out-Null <# Prevent PSScriptAnalyzer warning #> }
}
#endregion Generated Events
#----------------------------------------------
#region Generated Form Code
#----------------------------------------------
$formSCCMSpiderDeployV13.SuspendLayout()
$groupbox3.SuspendLayout()
$groupbox1.SuspendLayout()
$groupbox2.SuspendLayout()
#
# formSCCMSpiderDeployV13
#
$formSCCMSpiderDeployV13.Controls.Add($picturebox4)
$formSCCMSpiderDeployV13.Controls.Add($labelLiteVersion20012020P)
$formSCCMSpiderDeployV13.Controls.Add($groupbox3)
$formSCCMSpiderDeployV13.Controls.Add($labelNb100)
$formSCCMSpiderDeployV13.Controls.Add($checkedlistbox1)
$formSCCMSpiderDeployV13.Controls.Add($groupbox1)
$formSCCMSpiderDeployV13.Controls.Add($groupbox2)
$formSCCMSpiderDeployV13.Controls.Add($labelcoucocuc)
$formSCCMSpiderDeployV13.AutoScaleDimensions = '6, 13'
$formSCCMSpiderDeployV13.AutoScaleMode = 'Font'
$formSCCMSpiderDeployV13.BackColor = 'Control'
$formSCCMSpiderDeployV13.BackgroundImageLayout = 'Stretch'
$formSCCMSpiderDeployV13.ClientSize = '555, 577'
#region Binary Data
$formSCCMSpiderDeployV13.Icon = [System.Convert]::FromBase64String('
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