Core/Public/Wifi/Get-WifiAvailableAdapters.ps1

Function Get-WiFiAvailableAdapters {
  <#
.SYNOPSIS
    Retrieves a list of available Wi-Fi adapters on the system.
.DESCRIPTION
    This function checks for Wi-Fi adapters on the system by requesting the necessary
    location permission. If permission is granted, it attempts to fetch a list of available
    Wi-Fi adapters using the `FindAllAdaptersAsync` method. A timeout value can be specified
    for the operation.
 
.PARAMETER TimeoutMs
    Optional. The timeout duration (in milliseconds) for fetching the Wi-Fi adapters.
    Defaults to 10,000 milliseconds (10 seconds).
 
.EXAMPLE
    Get-WiFiAvailableAdapter
    Retrieves all available Wi-Fi adapters within the default timeout.
 
.EXAMPLE
    Get-WiFiAvailableAdapter -TimeoutMs 5000
    Retrieves all available Wi-Fi adapters with a 5-second timeout.
#>

  [outputtype([Windows.Devices.WiFi.WiFiAdapter])]
  param(
  )
  Process {
    #if ( (Request-LocationPermission) -ne [Windows.Devices.Geolocation.GeolocationAccessStatus]::Allowed) { Write-Warning "WiFi-informatie can not be retrieved without locatie-Access."; return }
    #Await -WinRtTask ([Windows.Devices.WiFi.WiFiAdapter]::FindAllAdaptersAsync()) -ResultType ([System.Collections.Generic.IReadOnlyList[Windows.Devices.WiFi.WiFiAdapter]]) -TimeoutMs $TimeoutMs
    $AsyncOperation=[Windows.Devices.Wifi.WifiAdapter]::FindAllAdaptersAsync()
    while ($AsyncOperation.Status -ne  [Windows.Foundation.AsyncStatus]::Completed){
      start-sleep -Milliseconds 50
    }
    Return $AsyncOperation.GetResults()
  }
}