# SpeedTest-CLI Powershell Module

By
,
Powershell
,
Modules
Published 2022-08-07

Get your copy here
https://www.powershellgallery.com/packages/SpeedTest-CLI/1.0.0

This blog has nothing to do with ice-creams
This blog has nothing to do with ice-creams

# Another SpeedTest Module 💨

Well Adam why on earth did you go and do another Crescendo Powershell module for an internet speed-test when you did one of these last month? Dearest reader, as I have 4 beautiful daughters who I try my very best to provide for, means that me aka Dad is left to still use his very old x86 laptop. So to actually even build the last speedtest module I needed to borrow my Wifes' much newer x64 laptop and build and deploy the module. Which meant that when I was writing the blog for the last speedtest module, I didn't include any screen-shots of the actual module in motion as I could not even run it on my laptop 😭 To make things right, I found another speedtest command line program that is compatible with both x86 and x64 meaning I could actually run this speedtest module I was building on my own laptop. Which to me was worth the effort to build this, as there are probably countless other dads out there having to make do with their decade old laptop, but also want to run speedtests via the command line right?

I will be showing you via scoop which has nothing to do with ice-creams
I will be showing you via scoop which has nothing to do with ice-creams

# Scoop 🍦

Scoop is a great place to find useful applications
Scoop is a great place to find useful applications

I have used Chocolatey in the past, but at the moment I have Scoop installed. So I am going to produce the super quick guide to installing Scoop and getting this speedtest installed. Are you ready?

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
scoop bucket add extras
scoop install librespeed-cli

💥 that's is all you have to do, 3 lines of code, to install scoop, add the extras, and install the program needed for this module. Now you have scoop installed, and the actual program, you could just get running it, but where would be the fun in that if you are not using a cmdlet to run the program?

# Example ▶️

Not that I do not trust all my readers, but I will just be outputting the simple results, as I do not wish to share my personal IP address or ISP, but this information is shown in the tests. So lets get round to some good old fashioned examples:-

Initialize-SpeedTest -Simple

From running the above command I can now easily view my internet connection all from the comfort of my own shell
From running the above command I can now easily view my internet connection all from the comfort of my own shell

So today using my home broadband connection I can see I got 102.51Mbps download, and 9.58Mbps upload. This program will select the closet server to you, but you can over-ride that:-

Initialize-SpeedTest -ListServers

Gives me a list of all the available servers, I need to select this via the number
Gives me a list of all the available servers, I need to select this via the number

So now if I wanted to test my connection but to a server in Japan (listed as number 82) instead of London which it would have defaulted to I can use:-

Initialize-SpeedTest -Server 82 -Simple

Without the -Simple switch parameter you do get more information
Without the -Simple switch parameter you do get more information
As expected slower results from testing my internet speed with a Japanese server
As expected slower results from testing my internet speed with a Japanese server

Please see all the available parameters I included below

PARAMETERS
    -CSV

        Required?                    false
        Position?                    Named
        Accept pipeline input?       false
        Parameter set name           (All)
        Aliases                      None
        Dynamic?                     false
        Accept wildcard characters?  false

    -ListServers

        Required?                    false
        Position?                    Named
        Accept pipeline input?       false
        Parameter set name           (All)
        Aliases                      None
        Dynamic?                     false
        Accept wildcard characters?  false

    -NoICMP

        Required?                    false
        Position?                    Named
        Accept pipeline input?       false
        Parameter set name           (All)
        Aliases                      None
        Dynamic?                     false
        Accept wildcard characters?  false

    -Server <int>

        Required?                    false
        Position?                    0
        Accept pipeline input?       false
        Parameter set name           (All)
        Aliases                      None
        Dynamic?                     false
        Accept wildcard characters?  false

    -Share

        Required?                    false
        Position?                    Named
        Accept pipeline input?       false
        Parameter set name           (All)
        Aliases                      None
        Dynamic?                     false
        Accept wildcard characters?  false

    -Simple

        Required?                    false
        Position?                    Named
        Accept pipeline input?       false
        Parameter set name           (All)
        Aliases                      None
        Dynamic?                     false
        Accept wildcard characters?  false

    -ipv4only

        Required?                    false
        Position?                    Named
        Accept pipeline input?       false
        Parameter set name           (All)
        Aliases                      None
        Dynamic?                     false
        Accept wildcard characters?  false

    -ipv6only

        Required?                    false
        Position?                    Named
        Accept pipeline input?       false
        Parameter set name           (All)
        Aliases                      None
        Dynamic?                     false
        Accept wildcard characters?  false

    <CommonParameters>
        This cmdlet supports the common parameters: Verbose, Debug,
        ErrorAction, ErrorVariable, WarningAction, WarningVariable,
        OutBuffer, PipelineVariable, and OutVariable. For more information, see
        about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216).

I showed how to use 3 of these parameters, all the parameters minus the -Server parameter are switch parameters, so they are either on or off.

Thanks for reading I hope this module finds a place in your toolkit. 😁