OK, damit ich neu zu Windows Forms in Powershell verwenden, und ich habe ein bisschen Probleme mit der Form alle Laggy da es eine kontinuierliche Ping läuft. Grundsätzlich muss ich bei jedem Ping nur die IP-Adresse anzeigen. Ich habe versucht, herum zu suchen, und es scheint, als wäre der richtige Weg dazu ein laufender Job im Hintergrund?Continuous Ping Powershell Formular
ich glaube, die Art und Weise dies derzeit geschrieben wird, dass der Ping im Hintergrund passiert, aber ich bin nicht sicher, wie das Formular zu aktualisieren (oder wenn sein sogar möglich, sie sichtbar zu machen?)
Hier Eine Probe, jede Anleitung mit diesem würde sehr geschätzt werden.
function global:ContinuousPing{
$global:job = start-job {
while($true){
$pingStatus = Test-Connection google.com -Count 1
$label.text = $pingStatus.IPV4Address.IPAddressToString
#[System.Windows.Forms.Application]::DoEvents()
start-sleep 1
}
}
}
Add-Type -AssemblyName System.Windows.Forms
$pingForm = New-Object System.Windows.Forms.Form
$label = New-Object System.Windows.Forms.Label
$button1 = New-Object System.Windows.Forms.Button
$ping = {
ContinuousPing
while($true){
Receive-Job $job
}
}
$label.Text = "Ping Status"
$button1.Location = New-Object System.Drawing.Point(100,10)
$button1.add_Click($ping)
$pingForm.Controls.Add($label)
$pingForm.Controls.Add($button1)
$pingForm.ShowDialog() | Out-Null
remove-job $job
Sie finden das Ping-Signal an einem Hintergrundthread versenden müssen, haben vielleicht einen Blick auf [WPFRunspace] (https://gallery.technet.microsoft.com/scriptcenter/WPFRunspace-a-BackgroundWor-7f30edc4) –
Welche Power Version liegst du? –
Powershell-Version 3 – nkasco