运行 在 powershell 中作为作业运行
Running function as a job in powershell
下面是从 win-form 应用程序中 ping 所有机器的功能:
我只是 ping 所有机器并在输出框中显示结果并将其保存到 csv 文件中:
由于 UI 运行ning 为单线程模式,我无法执行任何其他进程。
所以请帮我 运行 这个函数作为 $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)
您正在寻找的是以太 Powershell 工作流程,阅读更多有关我在 powershell 销售中键入以下内容的信息:
get-help about_Workflows
或者您可以使用 powershell 中的此 cmdlet,名为:
get-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
下面是从 win-form 应用程序中 ping 所有机器的功能: 我只是 ping 所有机器并在输出框中显示结果并将其保存到 csv 文件中: 由于 UI 运行ning 为单线程模式,我无法执行任何其他进程。 所以请帮我 运行 这个函数作为 $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)
您正在寻找的是以太 Powershell 工作流程,阅读更多有关我在 powershell 销售中键入以下内容的信息:
get-help about_Workflows
或者您可以使用 powershell 中的此 cmdlet,名为:
get-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