PowerShell
Edit|Remove
################ 
# WLAN Manager # 
################ 
#Version: 2015-05-07 
#Author: johan.carlsson@innovatum.se , http://www.innovatum.se/personer/johan-carlsson 
 
<# 
 
.SYNOPSIS 
Disables the WLAN NIC when LAN NIC network connection is verified. 
Enables WLAN NIC when LAN NIC network connection is lost. 
 
.DESCRIPTION 
WLAN Manager runs as a scheduled task and will automatically disable your WLAN card when a LAN connection is verified. 
The WLAN card will be re-enabled once the LAN connection is lost. This ensures you'll always have the fastest available connection and stops network bridging. 
 
.EXAMPLE 
.\WLANManager.ps1 
Runs WLAN Manager in an interactive window. Will not install anything. This mode is only for testing and watching what happens via console output. 
 
.EXAMPLE 
.\WLANManager.ps1 -ReleaseDHCPLease:$true 
Runs WLAN Manager in an interactive window. Will not install anything. This mode is only for testing and watching what happens via console output. Releases DHCP lease before disabling WLAN card. 
 
.EXAMPLE 
.\WLANManager.ps1 -BalloonTip:$true 
Runs WLAN Manager in an interactive window. Will not install anything. This mode is only for testing and watching what happens via console output. Will show a balloontip when enabling or disabling WLAN card. 
 
.EXAMPLE 
.\WLANManager.ps1 -Install:System 
Installs WLAN Manager and will run at all times in the SYSTEM context. 
 
.EXAMPLE 
.\WLANManager.ps1 -Install:System -ReleaseDHCPLease:$true 
Installs WLAN Manager and will run at all times in the SYSTEM context. Releases DHCP lease before disabling WLAN card. 
 
.EXAMPLE 
.\WLANManager.ps1 -Remove:System 
Removes WLAN Manager installation for System. 
 
.EXAMPLE 
.\WLANManager.ps1 -Install:User 
Installs WLAN Manager and will run at user logon in the USER context. 
 
.EXAMPLE 
.\WLANManager.ps1 -Install:User -ReleaseDHCPLease:$true 
Installs WLAN Manager and will run at user logon in the USER context. Releases DHCP lease before disabling WLAN card. 
 
.EXAMPLE 
.\WLANManager.ps1 -Install:User -BalloonTip:$true 
Installs WLAN Manager and will run at user logon in the USER context. Will show a balloontip when enabling or disabling WLAN card. 
 
.EXAMPLE 
.\WLANManager.ps1 -Remove:User 
Removes WLAN Manager installation for User. 
 
.NOTES 
None. 
 
.LINK 
https://gallery.technet.microsoft.com/scriptcenter/WLAN-Manager-f438a4d7 
 
#> 
 
[CmdletBinding()] 
Param 
( 
    [Parameter(Mandatory=$False,Position=1,HelpMessage="Installs WLAN Manager for System or User.")] 
    [ValidateSet("System""User")] 
    [string]$Install, 
    [Parameter(Mandatory=$False,Position=2,HelpMessage="Removes WLAN Manager for System or User.")] 
    [ValidateSet("System""User")] 
    [string]$Remove, 
    [Parameter(Mandatory=$False,Position=3,HelpMessage="Release DHCP lease before disabling WLAN card.")] 
    [switch]$ReleaseDHCPLease, 
    [Parameter(Mandatory=$False,Position=4,HelpMessage="Displays balloontip when changes occur. Only valid when installing or running as User.")] 
    [switch]$BalloonTip 
) 
 
 
######################################### 
# Custom Variables for Your Environment # 
######################################### 
#Destination Path to where you want to store files for local install of WLAN Manager when installing for: System 
$SystemDestinationPath = "$env:ProgramFiles\WLANManager" 
#Registry destination path for writing version information to the registry when installing for: System 
$SystemVersionRegPath = "HKLM:\SOFTWARE\WLAN Manager" 
#Destination Path to where you want to store files for local install of WLAN Manager when installing for: User 
$UserDestinationPath = "$env:LOCALAPPDATA\WLANManager" 
#Registry destination path for writing version information to the registry when installing for: User 
$UserVersionRegPath = "HKCU:\SOFTWARE\WLAN Manager" 
 
 
<# 
D O   N O T   C H A N G E   A N Y T H I N G   B E L O W   T H I S   L I N E 
#> 
 
 
####################################################### 
# Change cmdlet parameters scope from Local to Global # 
####################################################### 
Set-Variable -Name Install -Value $Install -Scope Global -Force 
Set-Variable -Name Remove -Value $Remove -Scope Global -Force 
Set-Variable -Name ReleaseDHCPLease -Value $ReleaseDHCPLease -Scope Global -Force 
Set-Variable -Name BalloonTip -Value $BalloonTip -Scope Global -Force 
 
 
################################# 
# Unload/Load PowerShell Module # 
################################# 
 
#Remove PowerShell Module 
If ((Get-Module PSModule-WLANManager) -ne $null) 
    { 
        Remove-Module PSModule-WLANManager -Verbose 
    } 
 
#Import PowerShell Module 
$strBasePath = Split-Path -Parent $MyInvocation.MyCommand.Definition 
Import-Module "$strBasePath\PSModule-WLANManager.psm1" -Verbose 
 
 
##################### 
# Install or Remove # 
##################### 
 
#Version 
$Global:Version = "2015-05-07" 
 
#Set correct Destination and VersionRegPath 
If ($Install -eq "System" -and $BalloonTip -eq $true) 
    { 
        Write-Error -Message "Parameter '-ShowBalloonTip:`$true' is ONLY valid when installing for USER." -Category InvalidArgument -ErrorAction Stop 
    } 
ElseIf ($Install -eq "System" -or $Remove -eq "System") 
    { 
        $CustomDestinationPath = $SystemDestinationPath 
        $Global:VersionRegPath = $SystemVersionRegPath 
    } 
ElseIf ($Install -eq "User" -or $Remove -eq "User") 
    { 
        $CustomDestinationPath = $UserDestinationPath 
        $Global:VersionRegPath = $UserVersionRegPath 
    } 
 
#Install 
If ($Install -ne "") 
    { 
        #Install 
        Install-WLANManager -SourcePath $strBasePath -DestinationPath $CustomDestinationPath 
        Return 
    } 
#Remove 
ElseIf ($Remove -ne "") 
    { 
        Remove-WLANManager -FilePath $CustomDestinationPath 
        Return 
    } 
 
 
######## 
# Main # 
######## 
 
while ($true) 
{ 
    If ((Test-WiredConnection) -eq $true -and (Test-WirelessConnection) -eq $true) 
        { 
            Write-Host "Wired connection detected, disabling Wireless connection... " -NoNewline -ForegroundColor Yellow 
            If ($BalloonTip -eq $true) 
                { 
                    Show-BalloonTip -Text "Wired connection detected, disabling Wireless connection." -Title "WLAN Manager" -Icon Info 
                } 
            If ($ReleaseDHCPLease -eq $true) 
                { 
                    Remove-DHCPLease 
                } 
            #≥Windows 8 
            If ($OSInfo.Caption -match "Windows 8") 
                { 
                    $WLANAdapters = Get-NetAdapter -InterfaceDescription *Wireless*,*WiFi* 
                    foreach ($WLANAdapter in $WLANAdapters) 
                        { 
                            Disable-NetAdapter -Name $WLANAdapter.Name -IncludeHidden -Confirm:$False 
                        } 
                } 
            #<Windows 8 
            Else 
                { 
                    Disable-WLANAdapters | Out-Null 
                } 
            #Wait for WLAN to release DHCP lease and get disabled 
            while ((Test-WiredConnection) -eq $true -and (Test-WirelessConnection) -eq $true) 
                { 
                    sleep -Seconds 1 
                } 
            Write-Host "Done" -ForegroundColor White -BackgroundColor Green 
        } 
 
    ElseIf ((Test-WiredConnection) -eq $false -and (Test-WirelessConnection) -eq $false) 
        { 
            Write-Host "Wired connection lost, enabling Wireless connection... " -NoNewline -ForegroundColor Yellow 
            If ($BalloonTip -eq $true) 
                { 
                    Show-BalloonTip -Text "Wired connection lost, enabling Wireless connection." -Title "WLAN Manager" -Icon Info 
                } 
            #≥Windows 8 
            If ($OSInfo.Caption -match "Windows 8") 
                { 
                    $WLANAdapters = Get-NetAdapter -InterfaceDescription *Wireless*,*WiFi* 
                    foreach ($WLANAdapter in $WLANAdapters) 
                        { 
                            Enable-NetAdapter -Name $WLANAdapter.Name -IncludeHidden -Confirm:$False 
                        } 
                } 
            #<Windows 8 
            Else 
                { 
                    Enable-WLANAdapters | Out-Null 
                } 
            #Wait for WLAN Adapter to initialize and obtain an IP-address 
            while ((Test-WiredConnection) -eq $false -and (Test-WirelessConnection) -eq $false) 
                { 
                    sleep -Seconds 1 
                } 
            Write-Host "Done" -ForegroundColor White -BackgroundColor Green 
        } 
 
    Else 
        { 
            Write-Host "Sleeping..." -ForegroundColor Yellow 
            sleep -Seconds 1 
        } 
} 
 

Releasenotes

 

Description

WLAN Manager runs as a scheduled task and will automatically disable your WLAN card when a LAN connection is verified. The WLAN card will be re-enabled once the LAN connection is lost. This ensures you'll always have the fastest available connection and helps prevent network bridging.

You can run the script in the following modes: Install, Remove or Interactively (doesn't install anything). Please refer to script examples for more information.