Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell Probleme mit initialer Start-Wert-Befüllung einer DropDownList

Frage Entwicklung Batch & Shell

Mitglied: dschauerte

dschauerte (Level 1) - Jetzt verbinden

19.06.2014, aktualisiert 14:25 Uhr, 2146 Aufrufe, 5 Kommentare

Hallo liebe Community,

ich schreibe hier das erste Mal und hoffe auf eure guten Tipps.
Aktuell schreibe ich ein großes Skript, welches die Umzüge von Userhomes von FileServer A nach B automatisiert. Zur Auswahl des Ziel-Servers verwende ich eine ComboBox, Style DropDownList.
Ich möchte nun folgendes realisieren:

Die DropDownList soll initial den ersten Wert des Arrays anzeigen, sodass keine $NULL-Übergabe entstehen kann. Zur besseren Übersicht habe ich die Zeilen durchnummeriert. in den Zeilen 21 & 22 wollte ich den Start-Wert setzen. Dies funktioniert so allerdings leider nicht. Könntet ihr mir hier weiterhelfen? Des Weiteren suche ich nach einem Equivalent zu "Me.Close()", um das Fenster mit einem implementierten "Cancel" - Button zu schließen und das gesamte Skript zu beenden.

Für eine Hilfe wäre ich euch sehr dankbar!

Viele Grüße

Daniel

1 function Server-Auswahl
2 {
3 [array]$global:ServerList=Get-Content -Path D:\Scripts\AD\User\PS_UHomeCopy\Tools\FSList.csv | Where-Object {$_ -ne ""}
4 function Return-DropDown
5 {
6 $global:newServer = $DropDown.SelectedItem.ToString()
7 $Form.Close()
8 }
9
10 $Form = New-Object System.Windows.Forms.Form
11 $Form.width = 300
12 $Form.height = 150
13 $Form.Text = ”DropDown”
14 $Form.StartPosition = "CenterScreen"
15 $Form.KeyPreview = $False
16
17 $DropDown = new-object System.Windows.Forms.ComboBox
18 $DropDown.DropDownStyle = "DropDownList"
19 $DropDown.Location = new-object System.Drawing.Size(100,10)
20 $DropDown.Size = new-object System.Drawing.Size(130,30)
21 [System.Int32]$int = 2
22 $DropDown.SelectedIndex = $int
23
24
25 ForEach ($Item in $global:ServerList)
26 {
27 $a = $DropDown.Items.Add($Item)
28 }
29
.
.
$Form.Controls.Add($DropDown)

$DropDownLabel = new-object System.Windows.Forms.Label
$DropDownLabel.Location = new-object System.Drawing.Size(10,10)
$DropDownLabel.size = new-object System.Drawing.Size(100,30)
$DropDownLabel.Text = "Bitte Ziel-Server auswählen:"
$Form.Controls.Add($DropDownLabel)

$Button = new-object System.Windows.Forms.Button
$Button.Location = new-object System.Drawing.Size(100,50)
$Button.Size = new-object System.Drawing.Size(100,20)
$Button.Text = "OK"
$Button.Add_Click({Return-DropDown})
$form.Controls.Add($Button)

$Form.Add_Shown({$Form.Activate()})
[void]$Form.ShowDialog()

}
Server-Auswahl
Mitglied: colinardo
LÖSUNG 19.06.2014, aktualisiert um 14:25 Uhr
Hallo dschauerte, Willkommen auf Adminstrator.de!
Du versuchst den Index des DropDown-Feldes zu setzen bevor du es überhaupt mit Inhalt gefüllt hast, also mach dies danach (Zeile 22 nach Zeile 29 verschieben).
Um deine Form zu schließen schreibst du einfach
$Form.Close()
Grüße Uwe

p.s. die Nummerierung kannst du dir sparen wenn du Code-Tags für deinen Quellcode nutzt: <code> Quellcode </code>, ansonsten kommen uns hier auch eventuell wichtige Sonderzeichen abhanden.
Bitte warten ..
Mitglied: dschauerte
19.06.2014, aktualisiert um 14:08 Uhr
Super Uwe, vielen lieben Dank für den ersten Tipp mit der "verrückten" Zeile und den Code-Tags. Das werde ich demnächst beachten.
Zum zweiten Problem:

01.
 
02.
function Return-Cancel 
03.
 
04.
05.
[void][Microsoft.VisualBasic.Interaction]::MsgBox("Abbruch durch Benutzer!","OKOnly,Exclamation","UHomeCopy") 
06.
$Form.Close() 
07.
exit 
08.
09.
 
10.
$Button1 = new-object System.Windows.Forms.Button 
11.
$Button1.Location = new-object System.Drawing.Size(100,50) 
12.
$Button1.Size = new-object System.Drawing.Size(100,20) 
13.
$Button1.Text = "Cancel" 
14.
$Button1.Add_Click({Return-Cancel}) 
15.
$form.Controls.Add($Button1) 
16.
 
Das funktioniert so leider nicht. Hier bekomme ich ne Exception zurück, da sich dabei wohl die Windows Forms verabschieden.
Aus dem VBScript-Umfeld kenne ich da nur "Me.Close()". Das funktioniert hier aber nicht.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 19.06.2014, aktualisiert um 14:48 Uhr
Hierfür musst du aus der Funktion einen Wert zurückgeben anhand dessen du dann in einem If() entscheidest ob das Script beendet wird oder nicht:
Beispiel-Form
01.
function GenerateForm { 
02.
 
03.
#region Import the Assemblies 
04.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
05.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
06.
#endregion 
07.
 
08.
$script:quit = $false 
09.
 
10.
#region Generated Form Objects 
11.
$form1 = New-Object System.Windows.Forms.Form 
12.
$button2 = New-Object System.Windows.Forms.Button 
13.
$button1 = New-Object System.Windows.Forms.Button 
14.
$DropDown = New-Object System.Windows.Forms.ComboBox 
15.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
16.
#endregion Generated Form Objects 
17.
 
18.
#---------------------------------------------- 
19.
#Generated Event Script Blocks 
20.
#---------------------------------------------- 
21.
$handler_button2_Click=  
22.
23.
    $form1.Close() 
24.
    $script:quit = $true 
25.
26.
 
27.
$handler_button1_Click=  
28.
29.
    $DropDown.Items.Clear() 
30.
    1..10 | %{$DropDown.Items.Add($_)} 
31.
    $DropDown.SelectedIndex = 2 
32.
33.
 
34.
$OnLoadForm_StateCorrection= 
35.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
36.
	$form1.WindowState = $InitialFormWindowState 
37.
38.
 
39.
#---------------------------------------------- 
40.
#region Generated Form Code 
41.
$System_Drawing_Size = New-Object System.Drawing.Size 
42.
$System_Drawing_Size.Height = 103 
43.
$System_Drawing_Size.Width = 210 
44.
$form1.ClientSize = $System_Drawing_Size 
45.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
46.
$form1.Name = "form1" 
47.
$form1.Text = "Testform" 
48.
 
49.
 
50.
$button2.DataBindings.DefaultDataSourceUpdateMode = 0 
51.
 
52.
$System_Drawing_Point = New-Object System.Drawing.Point 
53.
$System_Drawing_Point.X = 102 
54.
$System_Drawing_Point.Y = 55 
55.
$button2.Location = $System_Drawing_Point 
56.
$button2.Name = "button2" 
57.
$System_Drawing_Size = New-Object System.Drawing.Size 
58.
$System_Drawing_Size.Height = 23 
59.
$System_Drawing_Size.Width = 75 
60.
$button2.Size = $System_Drawing_Size 
61.
$button2.TabIndex = 2 
62.
$button2.Text = "exit" 
63.
$button2.UseVisualStyleBackColor = $True 
64.
$button2.add_Click($handler_button2_Click) 
65.
 
66.
$form1.Controls.Add($button2) 
67.
 
68.
 
69.
$button1.DataBindings.DefaultDataSourceUpdateMode = 0 
70.
 
71.
$System_Drawing_Point = New-Object System.Drawing.Point 
72.
$System_Drawing_Point.X = 12 
73.
$System_Drawing_Point.Y = 55 
74.
$button1.Location = $System_Drawing_Point 
75.
$button1.Name = "button1" 
76.
$System_Drawing_Size = New-Object System.Drawing.Size 
77.
$System_Drawing_Size.Height = 23 
78.
$System_Drawing_Size.Width = 75 
79.
$button1.Size = $System_Drawing_Size 
80.
$button1.TabIndex = 1 
81.
$button1.Text = "set index" 
82.
$button1.UseVisualStyleBackColor = $True 
83.
$button1.add_Click($handler_button1_Click) 
84.
 
85.
$form1.Controls.Add($button1) 
86.
 
87.
$DropDown.DataBindings.DefaultDataSourceUpdateMode = 0 
88.
$DropDown.DropDownStyle = 2 
89.
$DropDown.FormattingEnabled = $True 
90.
$System_Drawing_Point = New-Object System.Drawing.Point 
91.
$System_Drawing_Point.X = 12 
92.
$System_Drawing_Point.Y = 12 
93.
$DropDown.Location = $System_Drawing_Point 
94.
$DropDown.Name = "DropDown" 
95.
$System_Drawing_Size = New-Object System.Drawing.Size 
96.
$System_Drawing_Size.Height = 21 
97.
$System_Drawing_Size.Width = 165 
98.
$DropDown.Size = $System_Drawing_Size 
99.
$DropDown.TabIndex = 0 
100.
 
101.
$form1.Controls.Add($DropDown) 
102.
 
103.
#endregion Generated Form Code 
104.
 
105.
#Save the initial state of the form 
106.
$InitialFormWindowState = $form1.WindowState 
107.
#Init the OnLoad event to correct the initial state of the form 
108.
$form1.add_Load($OnLoadForm_StateCorrection) 
109.
#Show the Form 
110.
$form1.ShowDialog()| Out-Null 
111.
 
112.
# gebe den Wert aus der Function zurück 
113.
return $script:quit 
114.
} #End Function 
115.
 
116.
#Call the Function 
117.
$result = GenerateForm 
118.
 
119.
# wenn $true zurückgegeben wird beende Script 
120.
if($result){ 
121.
    exit 
122.
123.
# Script wird weiter ausgeführt wenn die Form $false zurückgibt 
124.
write-host "Script continues here ..."
Hier läuft das Script nur weiter wenn auf das rote X der Form geklickt wurde. Wenn auf den Exit-Button geklickt wurde nicht.
Bitte warten ..
Mitglied: dschauerte
19.06.2014 um 14:48 Uhr
Vielen Dank, es funktioniert!
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Fehler beim Start von zweitem Process (5)

Frage von iceboxyz zum Thema Batch & Shell ...

Windows 10
Probleme beim Start von Windows 10 mit Sysprep (1)

Frage von SHeart0523 zum Thema Windows 10 ...

Windows 10
Windows 10 Start-Probleme - Hilfe (9)

Frage von clragon zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...