Flash PowerShell

Introduction

En tant que prestataire, je suis souvent amené à rédiger des petits bouts de code en PowerShell afin de faciliter l’administration du client ou encore automatiser la création de mes machines virtuelles…

 

Automatisation de la création de VM

Je prépare beaucoup de VMs. Ces VMs sont utilisées pour des PoC ou du laboratoire afin de tester les nouveautés Microsoft. Cependant, la création de VM manuelle peut être rébarbative, ennuyeuse et relativement longue.

J’ai donc créé sur mon Hyper-V un petit script qui permet de faciliter la création des VMs à partir d’un master.

Il faut d’abord prendre en charge les paramètres de la création de la VM (RAM, disque, etc …) :

Param ($VMName, $Memory, $Network, $DMemory, $Master)

Ensuite, il faut définir le chemin du master selon la version de Windows avec un switch() :

$PathMaster = Switch ($Master) {

   2008 {"D:\VMs\VHDs\MASTER-W2K8R2.vhdx"}
   2012 {"D:\VMs\VHDs\MASTER-W2K12R2.vhdx"}
   2016 {"D:\VMs\VHDs\MASTER-W2K16-1607.vhdx"}

}

Définir le chemin et le nom du futur disque enfant :

$VHDXPath = "D:\VMs\VHDs\" + $VMName + ".vhdx"

Créer la VM avec la commande New-VM :

New-VM -Name $VMName -MemoryStartupBytes $Memory -Generation 1 -NoVHD -SwitchName $Network

Modifier la mémoire dynamique :

Set-VMMemory -VMName $VMName -DynamicMemoryEnabled $DMemory

Créer le disque dur de différenciation à partir du disque parent :

New-VHD -Path $VHDXPath -ParentPath $PathMaster -Differencing

On ajoute le disque dur à la configuration de la VM :

Add-VMHardDiskDrive -VMName $VMName -Path $VHDXPath -ControllerType IDE -ControllerNumber 0

Et enfin, on démarre la VM :

Start-VM -Name $VMName

 

Script complet

Param (
      $VMName,
      $Memory,
      $Network,
      $DMemory,
      $Master
)

$PathMaster = Switch ($Master) {

       2008 {"D:\VMs\VHDs\MASTER-W2K8R2.vhdx"}
       2012 {"D:\VMs\VHDs\MASTER-W2K12R2.vhdx"}
       2016 {"D:\VMs\VHDs\MASTER-W2K16-1607.vhdx"}

}

$VHDXPath = "D:\VMs\VHDs\" + $VMName + ".vhdx"

New-VM -Name $VMName -MemoryStartupBytes $Memory -Generation 1 -NoVHD -SwitchName $Network
Set-VMMemory -VMName $VMName -DynamicMemoryEnabled $DMemory 
New-VHD -Path $VHDXPath -ParentPath $PathMaster -Differencing
Add-VMHardDiskDrive -VMName $VMName -Path $VHDXPath -ControllerType IDE -ControllerNumber 0
Start-VM -Name $VMName

 

Test

Il est temps de tester le script pour la création d’une VM nommée TEST-SCRIPT avec 2Go de RAM en Windows Server 2016 et un réseau interne :

.\VM_Creation.ps1 -VMName TEST-SCRIPT -Memory 2GB -Network vSwitch-Int-01 -DMemory $false -Master 2016

Capture

Ensuite, on fait un Get-VM pour vérifier le fonctionnement de la VM :

Capture1

 

 

 

3 commentaires Ajoutez le vôtre

  1. harfangus dit :

    Très bon tuto ! Est-ce utilisable également sur vmware ?

    J'aime

    1. Pas avec les mêmes commandes du moins. Les CMDLETS PowerShell sont spécifiques Hyper-V 🙂

      Aimé par 1 personne

  2. harfangus dit :

    Très bon tuto ! Il y a des commandes équivalentes sur vmware ?

    J'aime

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s