Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. param([System.Net.IPAddress]$network="192.168.0.0")
  2. Write-Host "Pinging network $network"
  3.  
  4. $pingScript = {
  5. Param (
  6. [string]$address
  7. )
  8. $ping = New-Object System.Net.NetworkInformation.Ping
  9. return $ping.Send($address)
  10. }
  11.  
  12. $runspacePool = [RunspaceFactory]::CreateRunspacePool(1, 50, [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault(), $Host)
  13. $runspacePool.Open()
  14.  
  15. $startTime = Get-Date
  16. $jobs = @()
  17. 1..254 | ForEach-Object {
  18. $address = $network.GetAddressBytes()
  19. $address[3] = $_
  20. $addressString = [string]::Join(".", $address)
  21. $job = [powershell]::Create().
  22. AddScript($pingScript).
  23. AddParameter("address", $addressString)
  24. $job.RunspacePool = $RunspacePool
  25. $jobs += New-Object PSObject -Property @{
  26. Job = $job
  27. Address = $addressString
  28. Result = $job.BeginInvoke()
  29. }
  30. }
  31.  
  32. Write-Host "Waiting." -NoNewline
  33. do {
  34. Write-Host "." -NoNewline
  35. Start-Sleep -Seconds 1
  36. } while ( $jobs.Result.IsCompleted -contains $false)
  37. Write-Host
  38.  
  39. $endTime = Get-Date
  40. $totalSeconds = "{0:N4}" -f ($endTime-$startTime).TotalSeconds
  41. Write-Host "All network pinged in $totalSeconds seconds"
  42.  
  43. foreach ($job in $jobs) {
  44. $result = $job.Job.EndInvoke($job.Result)
  45. if ($result.Status -eq [System.Net.NetworkInformation.IPStatus]::Success) {
  46. Write-Host "$($job.Address): $($result.Status) in $($result.RoundtripTime)ms"
  47. }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement