system-maintenance/Restart-WiFi.ps1

function Restart-WiFi {
    <#
.SYNOPSIS
Restats WiFi connection

.DESCRIPTION
Check if there is any active wlan interface and restarts its connection.

.EXAMPLE
Restart-WiFi
Restat WiFi interface if there is any currently active.

#>


    [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')]
    param()

    process {
        $ssid = netsh wlan show interfaces | ? { $_.Contains(" SSID ") }
        if ($ssid) {
            $connectionProfile = Get-NetConnectionProfile -IPv4Connectivity Internet | ? { $ssid.Contains($_.Name) } | Select-Object -First 1
            $ssid = $connectionProfile.Name
            $interface = $connectionProfile.InterfaceAlias

            if ($PSCmdlet.ShouldProcess("$interface")) {
                Write-Host "Disconnecting interface: $interface" -ForegroundColor Green
                netsh wlan disconnect
                Start-Sleep -Seconds 2
                Write-Host "Connecting to SSID: $ssid on interface: $interface" -ForegroundColor Green
                netsh wlan connect interface=$interface name=$ssid
            }
        }
        else {
            Write-Host "Couldn't find active wlan itnerface" -ForegroundColor Red
        }
    }
}