Script pour activer ou désactiver une carte réseau avec powershell

logo microsoft powershell

Dans ce billet je vais présenter la construction d’un petit script permettant d’activer ou de désactiver une ou plusieurs carte réseau de votre station de travail. Pour rappel powershell est une interface dite en « ligne de commande » développé par Micrososft. Il utilise la notion d’objet et vous permet d’interagir avec votre système de façon « automatisé ». A la différence du « batch » il permet beaucoup plus de possibilités et d’actions.

Vous pouvez développer des script powershell via un simple éditeur de texte en sauvegardant vos fichiers au format .ps1, veillez à ne pas cumuler les extensions ( ex : script.ps1.txt)

Pour l’exécuter, faite un clique droit puis valider avec « Exécuter avec Powershell » comme sur la capture d’écran ci-dessous. Si vous désirez utiliser un invite de commande pour tester votre script vérifiez que les fichiers en PS1 sont executé avec le module powershell et non pas le bloc note.

Vous trouverez l’exécutable dans C:\Windows\System32\WindowsPowerShell\v1.0

1 - execution script powershell

Pour créer le script d’activation, on va commencer par lister les cartes réseaux de votre station de travail avec la commande ci-dessous. En cas de doute comparez simplement les adresses MAC de vos cartes afin de déterminer clairement sur quelle carte vous allez travailler.

1
Get-WmiObject win32_NetworkAdapter | format-table

Une fois votre carte identifiée, récupérer son DeviceID

2 - liste des cartes reseaux en powershell

Le script est très simple, il va se composer d’une interaction avec l’utilisateur lui demandant de saisir son choix. En l’occurrence Activation ou Désactivation(tout deux représenté par A ou D).

Pensez à exécuter le script en administrateur, si vous vous trouvez sur un domaine je détail plus bas un morceau de code vous permettant d’exécuter le script avec le login de votre choix.

Pensez à adapter votre DeviceID sur la ligne du script ci-dessous

1
$ethernet = Get-WmiObject win32_NetworkAdapter | where {$_.DeviceID -eq 7}

Activer_ou_desactiver_carte_ethernet.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 # Run your code that needs to be elevated here
    $choix=Read-Host "Voulez vous activer ou désactiver votre carte  ?(a/d)"
while ($choix -ne "a" -or $choix -ne "d" ) {
    clear-host
    echo "Votre saisie est incorrect"
    echo "veillez à utiliser [a] pour activer et [d] pour désactiver"
    echo "[=================================================================]"
    $choix=Read-Host "Voulez vous activer ou désactiver votre carte  ?(a/d)"
    echo "[=================================================================]"
}
    $ethernet = Get-WmiObject win32_NetworkAdapter | where {$_.DeviceID -eq 7}
    if ($choix -eq "a") {
    $ethernet.Enable()
    }
    ElseIf($choix -eq "d") {
    $ethernet.Disable()
    }

Si vous vous trouvez sur un domaine ou que vous souhaitez exécuter le script depuis des identifiants différents de ceux sur lequel vous êtes logué analysez le script ci-dessous. J’y ai rajouté un morceaux de code vous permettant de choisir sous quelle identité vous souhaitez exécuter le script.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Get the ID and security principal of the current user account
 $myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
 $myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)
 
 # Get the security principal for the Administrator role
 $adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
 
 # Check to see if we are currently running "as Administrator"
 if ($myWindowsPrincipal.IsInRole($adminRole))
    {
    # We are running "as Administrator" - so change the title and background color to indicate this
    $Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(COMMANDER LAUNCHER)"
    $Host.UI.RawUI.BackgroundColor = "DarkRed"
    clear-host
    }
 else
    {
    # We are not running "as Administrator" - so relaunch as administrator
   
    # Create a new process object that starts PowerShell
    $newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell";
    # Specify the current script path and name as a parameter
    $newProcess.Arguments = $myInvocation.MyCommand.Definition;
    # Indicate that the process should be elevated
    $newProcess.Verb = "runas";
    # Start the new process
    [System.Diagnostics.Process]::Start($newProcess);
    # Exit from the current, unelevated, process
    exit
    }
 
#Début du code avec les droits fourni par l'utilisateur
$choix=Read-Host "Voulez vous activer ou désactiver votre carte  ?(a/d)"
while ($choix -ne "a" -or $choix -ne "d" ) {
    clear-host
    echo "Votre saisie est incorrect"
    echo "veillez à utiliser [a] pour activer et [d] pour désactiver"
    echo "[=================================================================]"
    $choix=Read-Host "Voulez vous activer ou désactiver votre carte  ?(a/d)"
    echo "[=================================================================]"
}
    $ethernet = Get-WmiObject win32_NetworkAdapter | where {$_.DeviceID -eq 7}
    if ($choix -eq "a") {
    $ethernet.Enable()
    }
    ElseIf($choix -eq "d") {
    $ethernet.Disable()
    }

NB: Je suis incapable de remettre la main sur la source du morceau de code permettant une autre identification pour le script, si par hasard quelqu’un peut le communiquer je l’ajouterai à la source de fin de billet.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17NmM8q9TC7f4eKczRzHFXTZd39S8K24dv
Donate

Laisser un commentaire

Assemblé dans la station orbitale WordPress