jeudi 26 août 2021

Généralités VmWare

Nous allons voir ici les bases du module VmWare pour PowerShell (VMware.VimAutomation.Core). Cet article montre comment se connecter sur un serveur VmWare, obtenir des informations (comme la liste des VMs), et fermer la connexion.

 

#Variables PowerShell.
$ErrorActionPreference = "SilentlyContinue"   #Defaut = Continue
$ConfirmPreference     = "None"               #Defaut = High


#Import du module VmWare.
Import-Module -Name VMware.VimAutomation.Core -Scope Global
if ((Get-Module -Name VMware.VimAutomation.Core) -eq $null) { Return }


#Configuration du module VmWare : Supprimer l'alerte du certificat.
#Options : Fail, Ignore, Warn.
$null = Set-PowerCliConfiguration -InvalidCertificateAction Ignore

#Configuration du module VmWare : Désactive le CEIP.
#Options : $True, $False.
$null = Set-PowerCliConfiguration -ParticipateInCeip $false

#Configuration du module VmWare : Web Timout (défaut = 300s).
$null = Set-PowerCliConfiguration -WebOperationTimeoutSeconds 300

#Configuration du module VmWare : Proxy.
$null = Set-PowerCliConfiguration -ProxyPolicy NoProxy


#Initialisation.
$vSrv   = "monserveur.sekki.fr"   #Nom ou Ip du vCenter.
$vConn  = $null                   #Information de connection.
$Cred   = $null                   #Login et mot de passe pour la connection.
$delais = 500
$ping   = New-Object System.Net.NetworkInformation.Ping


#MessageBox.
function Alerte([string]$TEXT)
  {
    $MessageBox = [Windows.Forms.MessageBox]
    $BoutonBox = [Windows.Forms.MessageBoxButtons]::OK
    $IconBox = [windows.forms.MessageBoxIcon]::Warning
    $null = $MessageBox::show($TEXT,"MessageBox",$BoutonBox,$IconBox)
  }


#Enregistrer le login et mot de passe (Credential).
While ($Cred -eq $null)
 {
   $Cred = Get-Credential -Message "Login to VmWare."
 }


#Verifie si le serveur répond au ping.
Try   { $reply = $ping.Send($vSrv,$delais) }
Catch { Alerte "Le serveur ne repond pas."; Return }
if ($reply.Status -ne "Success") { Alerte "Le serveur ne repond pas."; Return }


#Connection au vCenter.
$vConn = Connect-VIServer -Server $vSrv -Credential $Cred -Port 443 -Protocol https -EA SilentlyContinue
if ($vConn -eq $null)
  {
    Alerte "Echec de la connection à VmWare."
    Return #Si on est pas connecté on sort.
  }


###### Get-VM ######


#Liste les VMs.
$VMs = Get-VM
$VMs | Out-GridView

#Liste les VMs allumées.
$VMs = (Get-VM).where{$_.PowerState -eq 'PoweredOn'}
$VMs | Out-GridView

#Liste les VMs commencant par.
$VMs = Get-VM -Name V*
$VMs | Out-GridView

#Liste les VMs Windows.
$VMs = (Get-VM).where{$_.Guest.OSFullName -match 'Windows'}
$VMs | Out-GridView


###### Get-VApp ######

$VAs = Get-VApp
$VAs | Out-GridView


###### Get-Host ######


#Liste les Hotes.
$Hosts = Get-VMHost
$Hosts | Out-GridView


###### Get-DataStore ######


#Liste les Datastores.
$DSs = Get-Datastore
$DSs | Out-GridView


#Liste les Datastores d'un hote en particulier.
$DSs = Get-VMHost -Name Adam | Get-Datastore
$DSs | Out-GridView

#Info d'un Datastore.
$DSs = Get-Datastore -Name DS_SEKKI_01
$DSs | Out-GridView


###### Get-SnapShot ######


#Liste les SnapShots
$SSs = (Get-VM | Get-Snapshot)
$SSs | Out-GridView


###### Get-DataCenter ######


#Liste les DataCenters
$DCs = Get-DataCenter
$DCs | Out-GridView

#Liste les VMs d'un DataCenter
$DCs = Get-DataCenter -Name PARIS | Get-VM
$DCs | Out-GridView

#Liste les Datastores d'un DataCenter
$DCs = Get-DataCenter -Name PARIS | Get-Datastore
$DCs | Out-GridView


###### End ######


Disconnect-VIServer -Server $vConn