我正在开发Powershell GUI,向用户展示建立VPN连接的每个步骤。因此,当他开始编写脚本时,他将看到所有步骤,当前步骤以粗体显示,最后一步完成以浅灰色显示。 Webbrowser通过加载与当前步骤相关的html文件来显示其他信息。
我不明白我一方面要加载GUI,另一方面要做背景工作。在这个例子中,它正在工作,因为我创建了一个用于更改html的按钮事件:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$SyncHash = [hashtable]::Synchronized(@{})
$Main = New-Object Windows.Forms.Form
$Main.Width = 768
$Main.Height = 576
$button_1 = New-Object System.Windows.Forms.Button
$button_1.Text = "1"
$button_1.Size = New-Object System.Drawing.Size(20,20)
$button_1.Location = New-Object System.Drawing.Size(20,10)
$Main.Controls.Add($button_1)
$SyncHash.infoBrowser = new-object Windows.Forms.WebBrowser
$SyncHash.infoBrowser.Size = new-object System.Drawing.Size(710,200)
$SyncHash.infoBrowser.Location = new-object System.Drawing.Size(10,290)
$SyncHash.infoBrowser.ScrollBarsEnabled = $true
$Main.Controls.Add($SyncHash.infoBrowser)
$htmlFile = "h:\csv\Test.html"
$html = get-content $htmlFile
$SyncHash.infoBrowser.DocumentText = $html
$button_1.Add_Click(
{
$htmlFile = "h:\csv\underLAN.html"
$html = get-content $htmlFile
write-host $html
$SyncHash.infoBrowser.DocumentText = $html
})
[Windows.Forms.Application]::Run($Main)
但是,如果尝试使用工作,就会发生这种情况。
...
$underLAN={
$htmlFile = "h:\csv\underLAN.html"
$html = get-content $htmlFile
write-host $html
$SyncHash.infoBrowser.DocumentText = $html
}
[Windows.Forms.Application]::Run($Main)
Start-Job -Name test -ScriptBlock $underLAN | Receive-Job