Private/Functions.ps1
|
$ScriptBlockSwitchFrequencyChanel = { param ($frequency_mhz) switch ($frequency_mhz) { # 2.4 GHz Band (Channels 1–13) { $_ -ge 2412 -and $_ -le 2472 } { return [math]::Floor(($_ - 2412) / 5) + 1 } # 5 GHz Band # UNII-1 (Channels 36-48) { $_ -ge 5180 -and $_ -le 5230 } { return [math]::Floor(($_ - 5180) / 5) + 36 } # UNII-2 (Channels 52-64) { $_ -ge 5230 -and $_ -le 5280 } { return [math]::Floor(($_ - 5230) / 5) + 52 } # UNII-3 (Channels 100-144) { $_ -ge 5500 -and $_ -le 5700 } { return [math]::Floor(($_ - 5500) / 5) + 100 } # UNII-4 (Channels 149-165) { $_ -ge 5745 -and $_ -le 5825 } { return [math]::Floor(($_ - 5745) / 5) + 149 } # 6 GHz Band (Channels 1–233) { $_ -ge 5950 -and $_ -le 6525 } { return [math]::Floor(($_ - 5950) / 5) + 1 } # If the frequency is out of range default { return "Out of range" } } } function Get-WifiChannel { param( [parameter(Mandatory = $False, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias("WiFiAvailableNetwork")] [Windows.Devices.WiFi.WiFiAvailableNetwork[]]$WiFiAvailableNetworks, # Single center frequency in kilohertz (optional) [parameter(Mandatory = $False)] [int]$ChannelCenterFrequencyInKilohertz ) process { if ($ChannelCenterFrequencyInKilohertz) { # If a single center frequency is provided, calculate the channel for it return &$ScriptBlockSwitchFrequencyChanel ($ChannelCenterFrequencyInKilohertz / 1000) } else { # If no frequency is provided, loop through Wi-Fi networks foreach ($WiFiAvailableNetwork in $WiFiAvailableNetworks) { # Get the ChannelCenterFrequencyInKilohertz from the current network and convert it to MHz # Call the script block to get the channel number [PSCustomObject]@{ Ssid = $WiFiAvailableNetwork.Ssid WifiChannel = &$ScriptBlockSwitchFrequencyChanel ($WiFiAvailableNetwork.ChannelCenterFrequencyInKilohertz / 1000) } } } } } function Get-WifiBandName { param ([long]$ChannelCenterFrequencyInKilohertz) switch ($ChannelCenterFrequencyInKilohertz) { { $_ -ge 2400000 -and $_ -le 2500000 } { "2.4 GHz"; break } { $_ -ge 5150000 -and $_ -le 5895000 } { "5 GHz"; break } { $_ -ge 5925000 -and $_ -le 7125000 } { "6 GHz"; break } Default { $ghz = [math]::Floor($_ / 100000) / 10 "$ghz GHz" } } } |