Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

De VBS à PowerShell

Introduction

Dans ce chapitre, nous allons voir comment passer du langage VBS, VBScript, à PowerShell.

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

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

PowerShell vs VBScript

Avant l’arrivée de PowerShell, un des langages les plus utilisés était VBScript. Ce langage permettait de réaliser des scripts puissants et complexes et même de créer des interfaces graphiques en utilisant le lien entre VBScript et HTML nommé HTA.

Alors que VBScript s’appuie sur les composants COM, PowerShell quant à lui s’appuie sur le framework .NET lui permettant d’utiliser davantage d’applications que VBS. En effet, PowerShell ayant accès à toutes les bibliothèques .NET, il sera possible de faire la même chose qu’avec du C#.

PowerShell peut s’exécuter aussi bien en mode console, c’est-à-dire via l’exécution de commandes dans l’invite de commandes PowerShell, que par script.

VBScript, quant à lui, ne possède pas d’invite de commandes, il faudra donc créer un fichier VBS pour exécuter ou tester vos actions.

Équivalences entre VBS et PowerShell

1. Équivalence de commandes

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

a. Commandes de gestion des fichiers/dossiers

Action

VBScript

PowerShell

Création d’un dossier

FileSystemObject.CreateFolder

New-Item -Type Folder

Création d’un fichier

FileSystemObject.CreateFile

New-Item -Type File

Suppression d’un dossier

FileSystemObject.DeleteFolder

Remove-Item

Suppression d’un fichier

FileSystemObject.DeleteFile

Remove-Item

Copie d’un fichier

FileSystemObject.CopyFile

Copy-Item

Déplacer un fichier

FileSystemObject.MoveFile

Move-Item

b. Commandes système

Action

VBScript

PowerShell

Création d’un objet

CreateObject

New-Object

-ComObject

Configurer une variable

DIM variable

Variable = valeur

$Variable = "valeur"

Afficher du texte

WScript.Echo

Write-Host

Write-Ouptut

Mettre en pause

Sleep

Start-Sleep

Se placer dans un répertoire

Set obj = CreateObject("wscript.shell")

obj.CurrentDirectory = "Chemin"

Set-location

Arrêt processus

objProcess.Terminate()

Stop-Process

Chercher un terme

InStr

Select-String

Nom du poste

Set obj = CreatObject("wscript.network")

obj.ComputerName

$env:computername

2. Les variables

a. En VBScript

Dans le langage VBScript, la déclaration d’une variable se fait à l’aide de la commande Dim.

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

Dim variable 
variable="Bienvenue dans notre livre" 

Nous allons ensuite afficher le contenu de cette variable à l’aide de la commande echo.

WScript.Echo Variable 

b. En PowerShell

La création d’une variable en PowerShell se fait en utilisant le caractère $ suivi du nom de la variable.

Ci-dessous la création de la même variable que précédemment :

$variable="Bienvenue dans notre livre" 

Pour afficher le contenu, nous utiliserons la cmdlet Write-host, tel que ci-dessous :

Write-host $variable 

3. Test d’existence de contenu

a. En VBScript

Test d’existence d’un dossier

Le test de présence d’un dossier en VBScript s’effectue ainsi :

Dim fso ...

De VBScript à PowerShell en exemple

1. Notre script de test

Dans cet exemple, nous allons étudier un script très simple en VBScript 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 VBScript

Ci-dessous le script concerné en VBScript :

Dim Choix 
Choix = InputBox("Souhaitez-vous continuer (Oui/Non) ?") 
wscript.echo "Votre choix est : " & Choix 
If Choix="oui" Then 
wscript.echo "Nous continuons" 
Chiffre = InputBox("Saisissez un chiffre entre 2 et 10:") 
For i = 1 To Chiffre 
wscript.echo i 
Next 
Else 
wscript.echo "On ne continue pas" 
End If 

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