Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- param([System.Net.IPAddress]$network="192.168.0.0")
- Write-Host "Pinging network $network"
- $pingScript = {
- Param (
- [string]$address
- )
- $ping = New-Object System.Net.NetworkInformation.Ping
- return $ping.Send($address)
- }
- $runspacePool = [RunspaceFactory]::CreateRunspacePool(1, 50, [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault(), $Host)
- $runspacePool.Open()
- $startTime = Get-Date
- $jobs = @()
- 1..254 | ForEach-Object {
- $address = $network.GetAddressBytes()
- $address[3] = $_
- $addressString = [string]::Join(".", $address)
- $job = [powershell]::Create().
- AddScript($pingScript).
- AddParameter("address", $addressString)
- $job.RunspacePool = $RunspacePool
- $jobs += New-Object PSObject -Property @{
- Job = $job
- Address = $addressString
- Result = $job.BeginInvoke()
- }
- }
- Write-Host "Waiting." -NoNewline
- do {
- Write-Host "." -NoNewline
- Start-Sleep -Seconds 1
- } while ( $jobs.Result.IsCompleted -contains $false)
- Write-Host
- $endTime = Get-Date
- $totalSeconds = "{0:N4}" -f ($endTime-$startTime).TotalSeconds
- Write-Host "All network pinged in $totalSeconds seconds"
- foreach ($job in $jobs) {
- $result = $job.Job.EndInvoke($job.Result)
- if ($result.Status -eq [System.Net.NetworkInformation.IPStatus]::Success) {
- Write-Host "$($job.Address): $($result.Status) in $($result.RoundtripTime)ms"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement