前提・実現したいこと
Powershell で 簡易的なGUIツールを作成しています。
例にPingを実行して、結果をTextboxに出力するスクリプトを載せます。
このプログラムでも Ping の結果を Textbox に出力を行えるのですが、最終的な結果のみの反映のようです。
これをリアルタイムに反映(cmdで実行したときのような)させるにはどのようにすればよろしいのでしょうか?
ご教授願えればと思います。
該当のソースコード
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$Form = New-Object System.Windows.Forms.Form
$Form.Size = New-Object System.Drawing.Size(600,400)
$Form.Text = "PINGツール"
$InputBox = New-Object System.Windows.Forms.TextBox
$InputBox.Location = New-Object System.Drawing.Size(10,60)
$InputBox.Size = New-Object System.Drawing.Size(150,20)
$Form.Controls.Add($InputBox)
$OutputBox = New-Object System.Windows.Forms.TextBox
$OutputBox.Location = New-Object System.Drawing.Size(10,150)
$OutputBox.Size = New-Object System.Drawing.Size(490,180)
$OutputBox.MultiLine = $True
$OutputBox.ScrollBars = "Vertical"
$Form.Controls.Add($outputBox)
$Font = New-Object System.Drawing.Font("MS ゴシック",11)
$Label = New-Object System.Windows.Forms.Label
$Label.Location = New-Object System.Drawing.Point(10,30)
$Label.Size = New-Object System.Drawing.Size(500,20)
$Label.Text = "マシン名を入力して[PING]ボタンを押ください。"
$Label.Forecolor = #000
$Label.Font = $Font
$Form.Controls.Add($label)
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(390,60)
$Button.Size = New-Object System.Drawing.Size(110,80)
$Button.Text = "Action"
$Button.Add_Click({})
$Form.Controls.Add($Button)
function pingInfo {
$machineName = $InputBox.Text $pingResult = ping $machineName | Format-List | Out-String $outputBox.Text = $pingResult
}
$Button.Add_Click({pingInfo})
$Form.Add_Shown({$Form.Activate()})
[void] $Form.ShowDialog()
補足情報(FW/ツールのバージョンなど)
下記サイトのプログラムを拝借しております
https://soma-engineering.com/coding/powershell/make-ping-window/2018/08/04/
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。