# encoding: ascii
# api: powershell
# title: Enable/Disable NIC, XP+
# description: Enabling/Disabling network adapter. Works on Windows XP and higher.
# version: 0.1
# type: script
# author: Kris Cieslak
# license: CC0
# x-poshcode-id: 1800
# x-archived: 2011-08-10T11:06:52
# x-published: 2011-04-21T13:00:00
#
#
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Name: ifstate
# Author: Kris Cieslak (defaultset.blogspot.com)
# Date: 2010-04-21
# Description: Enabling/Disabling network adapter.
# Works on Windows XP and higher.
# If your os is WinXP and its language is not English,
# you'll have to change values in $UpStateLabel and $DownStateLabel
#
# Parameters: network interface name,
# state [up/down] (optional, if up then down, or if down then up :))
# Usage example:
# ./ifstate 'Local network connection' down
# or
# ./ifstate 'Local network connection'
#
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
PARAM ($ifname = $(throw "Specifiy interface name"),$state = "")
trap [Exception] {
Write-Host 'Ups! Something wrong.' -ForegroundColor Red
continue;
}
# These values depends on your os language
$UpStateLabel = 'En&able';
$DownStateLabel = 'Disa&ble';
$st = 0;
if ($state.length -gt 0) {
switch ($state.ToLower()) {
'up' { $st = 1 }
'down' {$st = 0 }
}
} else {
$c =(gwmi Win32_NetworkAdapter | ? { $_.NetConnectionID -eq $ifname }).ConfigManagerErrorCode;
if ($c -eq 22) { $st = 1 } else { $st = 0 }
}
if ($st -eq 1) {
$StateLabel = $UpStateLabel;
} else {
$StateLabel = $DownStateLabel;
}
if ([int](([regex]('\d{1,3}')).match((gwmi win32_OperatingSystem).Version).ToString()) -le 5) {
$shell = New-Object -comObject Shell.Application;
$test=(($shell.NameSpace(3).Items() |
? { $_.Path -like '*7007ACC7-3202-11D1-AAD2-00805FC1270E*'}).GetFolder.Items() |
? { $_.Name -eq $ifname }).Verbs() | ? { $_.Name -eq $StateLabel }
if ($test -ne $null) {
($test).DoIt()
}
} else {
if ($st -eq 1) {
(gwmi Win32_NetworkAdapter | ? { $_.NetConnectionID -eq $ifname } ).Enable() | Out-Null
} else {
(gwmi Win32_NetworkAdapter | ? { $_.NetConnectionID -eq $ifname } ).Disable() | Out-Null
}
}