Scripts PowerCLI
Révision datée du 16 février 2016 à 16:43 par Ddevleeschauwer (discussion | contributions)
Cette page regroupe un ensemble de scripts PowerCLI/Powershell
Snapshot
- Script pour lister les VMs ayant un snapshot
#Server VSphere
$server = "adresse-VCenter"
#Connexion au vsphere
$connexion = Connect-VIServer -Server $server -WarningAction SilentlyContinue
#Liste des VM avec le nom du snapshot et la description
Get-VM | Get-Snapshot | Select VM,Name,Description
pause
Disconnect-VIServer -Server $connexion -Force -Confirm:$false
- Script pour réaliser un rapport des snapshot et l'envoyer par mai
Param (
[Alias("Host")]
[string]$VIServer = "adresse-VCenter",
[string]$User = "utilisateurr",
[string]$Password="Mot-de-passe",
[string]$PathToReport,
[string]$To = "mail@domain.com",
[string]$From = "vmreports@domain.com",
[string]$SMTPServer = "relay.domain.com"
)
$Header = @"
<style>
TABLE {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
TR:Hover TD {Background-Color: #C1D5F8;}
TH {border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color: #6495ED;}
TD {border-width: 1px;padding: 3px;border-style: solid;border-color: black;}
.odd { background-color:#ffffff; }
.even { background-color:#dddddd; }
</style>
<title>
Snapshot Report - $VIServer
</title>
"@
Function Set-AlternatingRows {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,ValueFromPipeline=$True)]
[object[]]$HTMLDocument,
[Parameter(Mandatory=$True)]
[string]$CSSEvenClass,
[Parameter(Mandatory=$True)]
[string]$CSSOddClass
)
Begin {
$ClassName = $CSSEvenClass
}
Process {
[string]$Line = $HTMLDocument
$Line = $Line.Replace("<tr>","<tr class=""$ClassName"">")
If ($ClassName -eq $CSSEvenClass)
{ $ClassName = $CSSOddClass
}
Else
{ $ClassName = $CSSEvenClass
}
$Line = $Line.Replace("<table>","<table width=""50%"">")
Return $Line
}
}
#Desactiver la securité
Set-ExecutionPolicy RemoteSigned
#Chargement du module Vmware
If (-not (Get-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue))
{ Try { Add-PSSnapin VMware.VimAutomation.Core -ErrorAction Stop }
Catch { Throw "Problem loading VMware.VimAutomation.Core snapin because ""$($Error[1])""" }
}
#Connexion au vsphere
$connection = Connect-VIServer -Server $VIServer -User $User -Password $Password -WarningAction SilentlyContinue
$Report = Get-VM | Get-Snapshot | Select VM,Name,Description,@{Label="Size";Expression={"{0:N2} GB" -f ($_.SizeGB)}},Created
If (-not $Report)
{ $Report = New-Object PSObject -Property @{
VM = "No snapshots found on any VM's controlled by $VIServer"
Name = ""
Description = ""
Size = ""
Created = ""
}
}
$Report = $Report | Select VM,Name,Description,Size,Created | ConvertTo-Html -Head $Header -PreContent "<p><h2>Snapshot Report - $VIServer</h2></p><br>" | Set-AlternatingRows -CSSEvenClass even -CSSOddClass odd
#Si on veut enregistrer le rapport à un endroit
#$Report | Out-File $PathToReport\SnapShotReport.html
#Fonction d'envoi de mail
$MailSplat = @{
To = $To
From = $From
Subject = "$VIServer Snapshot Report"
Body = ($Report | Out-String)
BodyAsHTML = $true
SMTPServer = $SMTPServer
}
Send-MailMessage @MailSplat
#Deconnexion du VIServer sans prompt
Disconnect-VIServer -Server $connection -Force -Confirm:$false