Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

De CMD à PowerShell

Introduction

Dans ce chapitre, nous allons voir comment passer du langage CMD, DOS, batch à PowerShell.

Nous ne verrons pas comment apprendre à traduire complètement un script existant en CMD vers PowerShell, car cela serait trop complexe, mais nous étudierons les équivalences entre certaines commandes (les plus connues) en batch avec PowerShell.

Dans un second temps, nous prendrons quelques exemples de scripts en CMD pour les traduire ensuite en PowerShell.

Équivalences entre CMD et PowerShell

1. Équivalence de commandes

Dans un premier temps, nous allons lister ci-dessous quelques-unes des commandes les plus utilisées en CMD/batch pour en montrer l’équivalence en PowerShell par catégories d’actions.

a. Commandes de gestion des fichiers/dossiers

Action

CMD

PowerShell

Se placer dans un répertoire

cd

CD ou Set-Location

Lister le contenu d’un dossier

dir

DIR ou Get-ChildItem

Renommer un élément

rename

Rename-Item

Créer un dossier

mkdir

New-Item -Type Directory

Créer un fichier

n/a 

New-Item -Type File

Supprimer un dossier

rmdir

Remove-Item

Supprimer un fichier

del

Remove-Item

Renommer un élément

ren

Rename-item

Déplacer un élément

move

Move-item

Copier un élément

copy

Copy-Item

b. Commandes réseau

Action

CMD

PowerShell

Tester la connexion

ping

Test-Connection

Test-NetConnection

Afficher la configuration IP

ipconfig

Get-NetIPConfiguration

Get-NetIPAddress

Faire un netstat

netstat

Get-NetTCPConnection

Faire un Traceroute

tracert

Test-NetConnection

Faire un NSLookup

Nslookup

Resolve-DnsName

c. Commandes système

Action

CMD

PowerShell

Configurer une variable

set

$Variable = "valeur"

Afficher du texte

echo

Write-Host

Write-Ouptut

Saisie utilisateur

set /p

Read-Host

Afficher l’aide d’une commande

<commande> /?

help <commande>

Get-Help <commande>

Arrêter un processus

taskkill

Stop-Process

Arrêter un poste

shutdown -s

Stop-Computer

Redémarrer un poste

shutdown -r

Restart-Computer

Chercher un terme

findstr

Select-String

Mettre en pause

pause

Start-Sleep

Lister les processus

tasklist

Get-Process

Effacer l’invite de commandes

cls

Clear-Host

Afficher des informations du poste

systeminfo

Get-ComputerInfo

Afficher le nom du poste

hostname

$env:computername

Copier dans le presse-papiers

clip

Set-Clipboard

2. Les variables

a. En langage CMD/batch

Dans le langage CMD ou batch, la déclaration d’une variable se fait à l’aide de la commande set.

Ci-dessous nous créons une variable nommée variable dont le contenu sera "Bienvenue dans notre livre" :

set variable="Bienvenue dans notre livre" 

Nous allons ensuite afficher le contenu de cette variable à l’aide de la commande echo. Il faudra mettre la vairable entre deux %.

echo %variable%...

De CMD à PowerShell en exemple

1. Notre script de test

Dans cet exemple, nous allons étudier un script très simple en batch pour ensuite voir l’équivalent en PowerShell.

Ce script fera les actions suivantes :

  • Affichage d’un message à l’utilisateur pour saisir une réponse : oui ou non.

  • Si oui, on continue le script.

  • Affichage d’un message à l’utilisateur pour saisir un chiffre entre 2 et 10.

  • Parcours des valeurs entre 1 et le numéro saisi.

  • Affichage de la valeur entre les deux intervalles.

2. Le script en batch

Ci-dessous le script concerné en batch/CMD :

@Echo OFF 
 
SET Choix= 
SET /p Choix=Souhaitez-vous continuer (Oui/Non) ? 
echo Votre choix est: %Choix% 
SET Chiffre = 
 
IF %choix%==oui ( 
   echo Nous continuons 
SET /p Chiffre= "Saisissez un chiffre entre 2 et 10:" 
echo Votre choix est:  %Chiffre% 
FOR /L %%G IN (1,1,%Chiffre%) DO echo %%G 
) ELSE ( 
   echo On ne continue pas 
) 

3. Le script en PowerShell

Ci-dessous le script concerné en PowerShell :

$Choix = Read-Host "Souhaitez-vous continuer (Oui/Non) ?" 
write-host "Votre choix est : $Choix" 
 
If($Choix -eq "Oui") 
    { 
           write-host...