'Netadapter Switcher PowerShell Script
Function AdapterSwitcher {
While ($true) {
$Ethernet = Get-NetAdapter | where-object {$_.Status -contains "Up"} | Where-Object {$_.PhysicalMediaType -eq "802.3" -and {$_.Name -notlike "PANGP" }}
if ($Ethernet -eq $null)
{
Write-Host "Ethernet Not Detected, Enabling WiFi"
#When the value is null this means that there is no wired connection and the wireless must be enabled
$WiFiNetadapter = get-netadapter | where-object {$_.Status -contains "Up"} | Where-Object {$_.PhysicalMediaType -eq "Native 802.11"}
$WiFiNetadapter | Enable-NetAdapter -Confirm:$false -Verbose
}
else
{
Write-Host "Disabling WiFi Network Adapter"
#When the value is not null, the value consists of the object information about the Local Area Network Connection and
#that the wireless connection needs to be disabled.
$WiFiNetadapter = get-netadapter | where-object {$_.Status -contains "Up"} | Where-Object {$_.PhysicalMediaType -eq "Native 802.11"}
$WiFiNetadapter | Disable-NetAdapter -Confirm:$false -Verbose }
Start-Sleep -s 2
}
Start-Sleep -s 3
}
#Remove-Variable -Name WIRED -Force
AdapterSwitcher
When i run this script, even though the value of $ethernet is not $null, the script still returns the below so it goes to the else block when it shouldn't?
write-host "Disabling Network Adapter"
Could anybody tell me why? This doesn't make logical sense
Solution 1:[1]
I am not sure what your While loop is doing, but your operators are all off. Look at the differences here...
$Ethernet = Get-NetAdapter | Where-Object {($_.Status -eq "Up") -and ($_.PhysicalMediaType -eq "802.3") -and ($_.Name -ne "PANGP" )}
if (!($Ethernet)) {
#...do something
}
You also appear to be trying to enable a Wifi adapter that already has a Status of 'Up'. If it's status is 'Up'...it is already enabled. Try this...
function AdapterSwitcher {
$Ethernet = Get-NetAdapter | Where-Object {($_.Status -eq "Up") -and ($_.PhysicalMediaType -eq "802.3") -and ($_.Name -ne "PANGP" )}
if (!($Ethernet)) {
$wifi = Get-NetAdapter | Where-Object {$_.PhysicalMediaType -like '*802.11*'}
Enable-NetAdapter -Name $wifi.Name -Confirm:$false
else {Disable-NetAdapter -Name $wifi.Name -Confirm:$false
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
