der123456
Goto Top

Powershell Programm nur starten falls button geklickt wird

Hallo Zusammen

Ich habe eine Frage bezüglich Powershell. Wenn ich ein kleines weiteres Programm habe und dies nur ausführen möchte falls der Button geklickt wird, wie geht das?
Ich habe es versucht und dieses kleine Programm wird jedesmal beim Ausführen vom Skript ebenfalls ausgeführt, aber ich möchte das kleine Programm nur ausgeführt haben beim Button-click.

Ich möchte gerne, dass das kleine programm in eine Variable geschrieben wird z.B. $Programm1 = ....
und dann sage ich beim Button-click führe das $Programm1 aus.
Könnt Ihr mir da weiterhelfen?
Vielen Dank.

Content-Key: 227651

Url: https://administrator.de/contentid/227651

Printed on: April 25, 2024 at 13:04 o'clock

Member: colinardo
colinardo Jan 24, 2014 updated at 10:56:44 (UTC)
Goto Top
Hallo der123456, Willkommen im Forum!
kleines Beispiel, der für dich relevante Code steht ab Zeile 18 im Event für den Button-Klick. Dort wird ein Script-Block in einer Variablen gespeichert und dann ausgeführt. Im Beispiel wird nur eine Message-Box angezeigt.
function GenerateForm {

#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null  
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null  
#endregion

#region Form Objects
$form1 = New-Object System.Windows.Forms.Form
$btnStartScript = New-Object System.Windows.Forms.Button
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects

#----------------------------------------------
# Event Script Blocks
#----------------------------------------------

$btnStartScript_OnClick= 
{
    $myProgram = { [System.Windows.Forms.MessageBox]::Show("Das Programm wurde ausgeführt") }  
    &$myProgram
}

$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
	$form1.WindowState = $InitialFormWindowState
}

#----------------------------------------------
#region Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 76
$System_Drawing_Size.Width = 224
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.MaximizeBox = $False
$form1.MinimizeBox = $False
$form1.Name = "form1"  
$form1.Text = "Demo Form"  


$btnStartScript.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 53
$System_Drawing_Point.Y = 25
$btnStartScript.Location = $System_Drawing_Point
$btnStartScript.Name = "btnStartScript"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 115
$btnStartScript.Size = $System_Drawing_Size
$btnStartScript.TabIndex = 0
$btnStartScript.Text = "Starte Programm"  
$btnStartScript.UseVisualStyleBackColor = $True
$btnStartScript.add_Click($btnStartScript_OnClick)

$form1.Controls.Add($btnStartScript)

#endregion Form Code

#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null

} #End Function

#Call the Form-Function
GenerateForm
Grüße Uwe
Member: der123456
der123456 Jan 24, 2014 at 13:14:15 (UTC)
Goto Top
Hallo Uwe

Danke! Aber bei mir hat es nicht geklappt. Kann man ein ganzes Programm/Skript in eine Variable einschreiben.... nd dann beim Button klick sollte das ganze Programm durchlaufen... Wie geht das?
Danke nochmals

Gruss der123456
Member: colinardo
colinardo Jan 24, 2014, updated at Jan 25, 2014 at 12:11:41 (UTC)
Goto Top
Zitat von @der123456:
Danke! Aber bei mir hat es nicht geklappt. Kann man ein ganzes Programm/Skript in eine Variable einschreiben.... nd dann beim
Button klick sollte das ganze Programm durchlaufen... Wie geht das?
Danke nochmals
bitte beschreibe dein Vorhaben genauer; wo soll dieser Button sein ? in einer Form ? woanders? bitte mehr Info. Das obige Script läuft einwandfrei, du musst halt einen Fehler bei deiner Umsetzung gemacht haben.
Ich habe es oben ja erläutert was du machen musst und wo du es einfügen musst...

ein Script packt man so in eine Variable:
$variable =  {
 # Dein Scriptblock 
 write-host "Test"  
}
und so führst du so ein Scriptblock aus (man beachte das &-Zeichen):
&$variable