Trasteando PowerShell I: Activar/Desactivar adaptador Wi-Fi

Este es el comienzo de una serie de posts llamada Trasteando PowerShell, al transcurso de esta serie iré posteando diversos scripts en PowerShell, de diferentes usos, según se me vayan ocurriendo cosas😛.

PowerShell es un lenguaje de scripting de Microsoft que ha ido mejorando con sus versiones. Actualmente en la versión 3(Windows 8 o Windows 7 SP1). Es mucho más fácil administrar los adaptadores de red, IP, etc.

Para listar los adaptadores de red disponibles, sólo hay que ejecutar el comando Get-NetAdapter

get-netadapter

En mi caso, mi adaptador Wi-Fi tiene el nombre de “Wi-Fi, por lo que podriamos ajustar la búqueda con: Get-NetAdapter -Name Wi-Fi

get-netadapter narrow

Así que teniendo ya esta busqueda hecha podemos hacer Get-NetAdapter -Name Wi-Fi | Disable-NetAdapter y desactivar el adaptador Wi-Fi, o no?

disable failed

Pues lo cierto es que no podemos hacerlo porque para ello se requieren permisos elevados, normalmente administrador o estar en el grupo de operadores de red. Necesitamos un proceso PowerShell  ejecutado como Administrador. por lo que encima de la barra de tareas dónde esté nuestra venana de powershell, y con el botón derecho le indicaremos ejecutar como Administrador, una vez salte UAC le diremos que aceptamos ejecutar PowerShell con permisos elevados, y una vez tengamos nuestra instancia de PowerShell como Administrador se puede ejecutar el comando sin problemas.

disable success

Lo que hace es pasar objeto “Wi-Fi” al comando Disable-NetAdapter, por lo que lo deshabilitaría. También funcionaria Disable-NetAdapter -Name Wi-Fi. pero para trastear más con PowerShell es más divertida la primera😛.

disabledadapter

Muy bien ya tenemos el adaptador wifi desactivado pero, ¿Y si lo queremos volver a activar? Tan fácil como usar el verbo Enable en vez de Disable:

enabledadapter

Todo esto es muy bonito, pero realmente vamos a tardar el mismo tiempo o quizás un poco menos (dependiendo de lo rápido que seas con el teclado :P) que de la forma tradicional Centro de redes -> Cambiar la configuración del adaptador > deshabilitar. Así que lo que vamos a hacer es un script con un pequeño menú que se eleve a administrador automáticamente (siempre con tu expreso permiso) y ejecute las acciones de Habilitar, y Desabilitar el adaptador Wi-Fi.

Lo primero que haremos será la elevación a usuario que se encuentre en el grupo administradores.

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())

if (-not $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) {
# Re-launch with full privileges…
Start-Process powershell.exe -Verb RunAs -ArgumentList (‘-noprofile -noexit -file “{0}”‘ -f ($myinvocation.MyCommand.Definition))
exit
}

Lo que hace es obtener las propiedades del usuario actual y comprobar si se encuentra en el grupo Administrator. Si no es el caso, relanza el script con permisos de Administrador. A continuación crearemos las funciones y variables necesarias para la ejecución del script

$adaptername=”Wi-Fi”

function Ewifi
{
Get-NetAdapter -Name $adaptername | Enable-NetAdapter -Confirm:$false
}

function Dwifi
{
Get-NetAdapter -Name $adaptername | Disable-NetAdapter -Confirm:$false
}

function Menu
{
[int]$MenuChoice = 0
while ( $MenuChoice -lt 1 -or $MenuChoice -gt 3 ){
Write-host “1. Enable Wi-Fi”
Write-host “2. Disable Wi-Fi”
Write-host “3. Quit and exit”
[Int]$MenuChoice = read-host “Please enter an option 1 to 3…”
Switch( $MenuChoice ){
1{Ewifi}
2{Dwifi}
3{Stop-Process -id $PID}
#default{<null}
}
}
return $MenuChoice
}

do{$result = Menu}until($result -eq 3)

A continuación dejo el script colgado en mi skydrive por si alguien quiere descargarselo directamente: 

EDIT 1: Se me olvidaba comentar que para poder ejecutar el script adjuntado hay que establecer la ExecutionPolicy de PowerShell a RemoteSigned, quizás más adelante haga un post sobre ello, pero la información que encontramos en la página oficial de Microsoft es suficientemente explicativa http://technet.microsoft.com/en-us/library/ee176961.aspx

Set-ExecutionPolicy RemoteSigned

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s