以下是从win-form appliaction中ping所有机器的功能: 我只是ping所有机器并在输出框中显示结果并将其保存到csv文件中: 由于UI作为单线程模式运行,我无法执行任何其他进程。 所以请帮我把这个函数作为$ Buttonping.Add_Click({pinginfo })
function pingInfo
{
$pingresults = @()
$outputBox.Clear()
$count1 = 0
$count2 = 0
$Inputarray = $InputBox.Lines
$outputBox.AppendText("PINGING ALL THE MACHINES : PLEASE WAIT TILL THE COMPLETION `n---------------------------------------------------`n")
foreach ($pc in $Inputarray)
{
if(!(Test-Connection -Cn $pc -BufferSize 16 -Count 1 -ea 0 -quiet))
{
$viv = ($pc).ToUpper()
#$outputBox.ForeColor = [System.Drawing.Color]::red
$outputBox.AppendText("$viv" +" ---- NOT REACHABLE `r`n")
#$outputBox.ForeColor = "red"
$outputBox.ScrollToCaret()
$Form.refresh()
$notreachabecount = $count1++
$details = @{
ComputerName = $pc
Status = "NOT REACHABLE"
}
$pingresults += New-Object PSObject -Property $details
}
else
{
$viv = $pc
$viv = ($pc).ToUpper()
#$outputBox.ForeColor = [System.Drawing.Color]::Green
$outputBox.AppendText("$viv" +" ---- ONLINE `r`n")
$outputBox.ScrollToCaret()
$Form.refresh()
$reachabecount = $count2++
$details = @{
ComputerName = $pc
Status = "ONLINE"
}
$pingresults += New-Object PSObject -Property $details
}
}
$pingresults | export-csv -Path $env:TEMP\DIT_Tool_Reports\Ping_Result.csv -NoTypeInformation
$outputBox.AppendText("---------------------------------------------------`r TOTAL ONLINE MACHINE : $count2 `n TOTAL OFFLINE MACHINES $count1")
$outputBox.ScrollToCaret()
$Form.refresh()
}
# Ping button's form part
$Buttonping = New-Object System.Windows.Forms.Button
$Buttonping.Location = New-Object System.Drawing.Size(190,130)
$Buttonping.Size = New-Object System.Drawing.Size(150,30)
$Buttonping.Text = "PING ALL MACHINES"
$Buttonping.Add_Click({pinginfo
})
$Form.Controls.Add($Buttonping)
答案 0 :(得分:0)
您正在寻找的是以上的Powershell工作流程,请详细了解我在PowerShell出售中输入以下信息:
get-help about_Workflows
或者您可以使用名为:
的powershell中的此cmdletget-help Start-Job -full
前。 " Start-Job":
start-job -name process -scriptblock {get-process}
Powershell将在作业中启动Get-process,您可以在此会话中继续工作或使用GUI。 作业完成后,您可以使用
get-job -name process | Receive-Job
要了解有关此cmdlet及其相关cmdlet的更多信息,请访问PowerShell并对以下内容进行获取帮助 相关链接: 获取在职 删除-工作 简历,招聘 启动工作 停止 - 工作 挂起作业 等待-工作 about_Jobs about_Job_Details