Top-Themen

Aktuelle Themen (A bis Z)

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, 2356 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 ..
Ähnliche Inhalte
Batch & Shell
Wert aus Array ausschliessen PowerShell
gelöst Frage von ivaylo53Batch & Shell2 Kommentare

Guten Morgen Community, irgendiwe komme ich bei diesem Problem nicht weiter. Ich habe Zwei Objekte $alCSVUser und $alADUser. Diese ...

Batch & Shell
PowerShell Wert in Array finden
gelöst Frage von derhoeppiBatch & Shell7 Kommentare

Hallo, in meinem Projekt lese ich einen Eintrag aus einer Combobox aus. Dieser wird in eine Variable / Objekt ...

Windows XP
Powershell: Registry-Wert setzen
gelöst Frage von AnkhMorporkWindows XP10 Kommentare

Hallo zusammen, Win XP, 32 bit, SP3, Patchstand tagesaktuell PS 2.0 Ich versuche die Auslagerungsdatei in der Registry neu ...

Batch & Shell
Werte aus CSV in TXT - Powershell
gelöst Frage von Komoran12Batch & Shell20 Kommentare

Hallo Ihr, ich benötige mal wieder Eure Hilfe,kann mir wer mit einem Code aushelfen? Ich habe eine .csv mit ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell18 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...

Windows 10
Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App
Tipp von kgbornWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...