sobota, 28 grudnia 2019

Napisałem skrypt w PowerShellu

W PowerShellu zakochany jestem od kilku lat, ale dawno nie miałem okazji nic w nim robić. Dopiero niedawno, przy okazji testowania pewnych rzeczy w pracy, miałem okazję napisać prosty skrypt, dedykowany do sprawdzania (średniej) prędkości i czasu pobierania pewnego pliku z jednego z urządzeń w naszej sieci.

Skrypt jest bardzo prosty, ale pomyślałem, że wrzucenie go tutaj może być całkiem dobrym pomysłem (szczególnie, że od jakiegoś czasu nic się i tak tutaj nie dzieje). Skrypt prezentuje się następująco:

param($URL, $count)
$i = 0
$total_time = 0
$total_speed = 0
While ($i -lt $count)
{
 $Start = Get-Date
 Invoke-WebRequest -Uri $URL -OutFile test.jpg
 $TimeTaken = ((Get-Date) - $Start).TotalMilliseconds
 $FileSize = (Get-Item test.jpg).length / 1MB * 8
 $speed = $FileSize / $TimeTaken * 1000
 Write-Host Request $i took $TimeTaken ms. Speed equal to $speed Mbps -ForegroundColor Green
 $total_time += $TimeTaken
 $total_speed += $speed
 $i ++
 Start-Sleep 1
 } 
$Avg_t = [String]::Format("{0:0.00} ms", $total_time / $count)
$Avg_s = [String]::Format("{0:0.00} Mbps", $total_speed / $count)
Write-Host Average time is $Avg_t. Average speed is $Avg_s -ForegroundColor Red