Laufende Powershell:Form aktualisieren
Hallo Leute,
ich habe ein kleines Problem:
ich schreibe gerade ein kleines Programm mit Powershell, das u.a. die Internetverbindung (in eine Funktion gepackt) abfragt:
Je nach Ausgang, wird eine der folgenden Funktionen aktiviert:
Nehmen wir an der User aktiviert seine Internetverbindung (er hat einen Laptop). Die Box bleibt so bestehen nun Drückt er ein Aktualisieren Button :
an dieser Stelle soll das Script(Programm) aktualisert werden, es soll nicht geschlossen werden und wieder neu gestartet werden.
$form.Refresh() alleine geht nicht und wenn ich einfach die Funktion " inettest " rein schreibe, funktioniert das zwar aber der alte Textblock verschwindet nicht
und der neue legt sich einfach darunter.
Gibt es da eine Möglichkeit den alten Text zu löchen oder halt eine Aktualisierung?
Lg Matze
ich habe ein kleines Problem:
ich schreibe gerade ein kleines Programm mit Powershell, das u.a. die Internetverbindung (in eine Funktion gepackt) abfragt:
function inettest {
#LAN(RJ45) Verbindungstest
##########################
$eth = Get-NetAdapter | Where-Object { $_.Name -eq "Ethernet" } | Select-Object Status |Select-Object -Last 1| Select -ExpandProperty "Status"
switch -Wildcard($eth)
{
"Up*" {inet1 ;break}
"Disconnected*" {inet0; false ;break}
default {echo "geht nicht"}
}
}
Je nach Ausgang, wird eine der folgenden Funktionen aktiviert:
function inet0
{
$Label3 = New-Object System.Windows.Forms.Label
$Label3.Location = New-Object System.Drawing.Point(735, 165)
$Label3.Text = "es besteht keine Verbindung
zum Netzwerk"
$Label3.AutoSize = $True
$Label3.Font = $Font2
$Form.Controls.Add($Label3)
$groupBox.Enabled = $false
$formButton.Enabled = $false
iiconr
}
function inet1
{
$Labeli = New-Object System.Windows.Forms.Label
$Labeli.Location = New-Object System.Drawing.Point(735, 165)
$Labeli.Text = "Netzwerk-Verbindung aktiv"
$Labeli.AutoSize = $True
$Labeli.Font = $Font2
$Form.Controls.Add($Labeli)
iicong
}
Nehmen wir an der User aktiviert seine Internetverbindung (er hat einen Laptop). Die Box bleibt so bestehen nun Drückt er ein Aktualisieren Button :
$formButtonak = New-Object System.Windows.Forms.Button
$formButtonak.Location = New-Object System.Drawing.Point(50,567)
$formButtonak.Size = New-Object System.Drawing.Size(120, 50)
$formButtonak.Text = "Aktualisieren"
$formButtonak.Font = $Font2
$formButtonak.BackColor = "#d0cdc6"
$formButtonak.Add_Click(
{
#Was muss hier rein ??????
})
$form.Controls.Add($formButtonak)
an dieser Stelle soll das Script(Programm) aktualisert werden, es soll nicht geschlossen werden und wieder neu gestartet werden.
$form.Refresh() alleine geht nicht und wenn ich einfach die Funktion " inettest " rein schreibe, funktioniert das zwar aber der alte Textblock verschwindet nicht
und der neue legt sich einfach darunter.
Gibt es da eine Möglichkeit den alten Text zu löchen oder halt eine Aktualisierung?
Lg Matze
Please also mark the comments that contributed to the solution of the article
Content-Key: 342279
Url: https://administrator.de/contentid/342279
Printed on: April 23, 2024 at 18:04 o'clock
6 Comments
Latest comment
das ging allerdings nicht.
TOP Fehlermeldung kann man da nur sagen Wo ist das Problem?!, geht doch ...
function GenerateForm {
#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
#endregion
#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$button3 = New-Object System.Windows.Forms.Button
$button2 = New-Object System.Windows.Forms.Button
$button1 = New-Object System.Windows.Forms.Button
$lbl = New-Object System.Windows.Forms.Label
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects
$handler_button3_Click=
{
$lbl.Text = "Ist doch nun wirklich nicht schwer!"
}
$handler_button2_Click=
{
$lbl.Text = "beim Klick auf die Buttons"
}
$handler_button1_Click=
{
$lbl.Text = "Ich ändere mich,"
}
$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
$form1.WindowState = $InitialFormWindowState
}
#----------------------------------------------
#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 101
$System_Drawing_Size.Width = 264
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.FormBorderStyle = 3
$form1.MaximizeBox = $False
$form1.MinimizeBox = $False
$form1.Name = "form1"
$form1.Text = "Change label"
$button3.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 174
$System_Drawing_Point.Y = 66
$button3.Location = $System_Drawing_Point
$button3.Name = "button3"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 75
$button3.Size = $System_Drawing_Size
$button3.TabIndex = 3
$button3.Text = "Change 3"
$button3.UseVisualStyleBackColor = $True
$button3.add_Click($handler_button3_Click)
$form1.Controls.Add($button3)
$button2.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 93
$System_Drawing_Point.Y = 66
$button2.Location = $System_Drawing_Point
$button2.Name = "button2"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 75
$button2.Size = $System_Drawing_Size
$button2.TabIndex = 2
$button2.Text = "Change 2"
$button2.UseVisualStyleBackColor = $True
$button2.add_Click($handler_button2_Click)
$form1.Controls.Add($button2)
$button1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 66
$button1.Location = $System_Drawing_Point
$button1.Name = "button1"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 75
$button1.Size = $System_Drawing_Size
$button1.TabIndex = 1
$button1.Text = "Change 1"
$button1.UseVisualStyleBackColor = $True
$button1.add_Click($handler_button1_Click)
$form1.Controls.Add($button1)
$lbl.Anchor = 13
$lbl.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 65
$System_Drawing_Point.Y = 9
$lbl.Location = $System_Drawing_Point
$lbl.Name = "lbl"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 156
$lbl.Size = $System_Drawing_Size
$lbl.TabIndex = 0
$lbl.Text = "Das ist mein Label"
$lbl.TextAlign = 32
$form1.Controls.Add($lbl)
#endregion Generated 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 Function
GenerateForm
Dann setze einfach die Image-Eigenschaft/Icon deines Labels oder was du sonst als Control verwendest neu. Ohne deinen Code können wir leider nur raten was du falsch machst, da bringen deine Bildchen hier leider nichts, aber ich vermute mal wieder da hat einer einfach die Scopes in Powershell noch nicht ganz verstanden.
Bitte lese dazu about_scopes.
Denn Variablen sind nicht aus jedem Kontext beschreib- bzw. änderbar. Insbesondere Scriptblocks/ Functions und Switch-Konstrukte musst du hier besonders beachten.
Bitte lese dazu about_scopes.
Denn Variablen sind nicht aus jedem Kontext beschreib- bzw. änderbar. Insbesondere Scriptblocks/ Functions und Switch-Konstrukte musst du hier besonders beachten.