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...