Question Création auto de VM
- Lopes
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 14 ans 5 mois #10368
par Lopes
Création auto de VM a été créé par Lopes
Bonjour,
J'ai fais un petit script et j'espère en faire profiter du monde, tellement il est utile à mon niveau.
Voici les étapes:
- Rentrer le nombre de VM à créer.
- Vérifie quel est le nom de la dernière VM crée pour ajouter +1 pour le nom de la nouvelle VM
-> Doit etre modifié selon les cas
- Recherche quel est le datastore avec le plus d'espace disque disponible
- Recherche quel est le host avec le plus dé mémoire libre.
- Création de la VM
- Démarrage de la VM
La fonction New-VMName sert à convertir le nom de la dernire vm en entier, puis d'ajouter +1, et de reconvertir en string.
Merci encore pour l'aide que j'ai eu
[code:1]
#
FONCTION STRING to INT et <->
Function New-VMName {
Param([String] $Name)
if ($Name -match \"VM000(?<Numero>\d+)\"«»)
{\"VM000$(($matches.Numero -as [int])+1)\"}
else
{ Write-Error \"New-VMName pas de correspondance pour $Name\"}
}
#
$nbvm = read-host \"Veuillez rentrer le nombre de vm à créer:\"
write-host \"Vous avez demandé la création de $nbvm VM...\"
for($i=1;$i -le $nbvm; $i++)
{
#
Deniere VM
$namevm = Get-VM -name VM00* | select Name
$lastvm = $null
foreach ($VM in $namevm)
{
if ($VM.name -gt $lastvm)
{
$lastvm = $VM.name
}
}
$NomDeLaVMaCreer = New-VMName $lastvm
write-host \"La VM $NomDeLaVMaCreer est en cours de création\"
#
datastore avec + d'espace libre
$data = Get-Datastore -Datacenter (mettre nom datacenter) | select Name,FreeSpaceMB
$LargestFreeSpace = “0”
$LargestDatastore = $null
foreach ($datastore in $data)
{
if ($Datastore.FreeSpaceMB -gt $LargestFreeSpace)
{
$LargestFreeSpace = $Datastore.FreeSpaceMB
$LargestDatastore = $Datastore.name
}
}
write-host \"Sur le datastore $LargestDatastore\"
#
host avec le plus de mémoire libre
$hosts = Get-VMHost -State Connected -Location (Get-Datacenter -Name (mettre nom datacenter)) | select Name,MemoryUsageMB
$LargestFreeMemory = “50000”
$LargestFreeHost = $null
foreach ($namehost in $hosts)
{
if($namehost.MemoryUsageMB -lt $LargestFreeMemory)
{
$LargestFreeMemory = $namehost.MemoryUsageMB
$LargestFreeHost = $namehost.name
}
}
write-host \"Le host $LargestFreeHost a le plus de mémoires libres... \"
#
code de création de la VM
New-VM -vmhost $LargestFreeHost -Name $NomDeLaVMaCreer -Template VM_TEMPLATE -Datastore $LargestDatastore -Description \"Libre\"
sleep 20
Start-VM -VM $NomDeLaVMaCreer
sleep 20
}
[/code:1]
J'ai fais un petit script et j'espère en faire profiter du monde, tellement il est utile à mon niveau.
Voici les étapes:
- Rentrer le nombre de VM à créer.
- Vérifie quel est le nom de la dernière VM crée pour ajouter +1 pour le nom de la nouvelle VM
-> Doit etre modifié selon les cas
- Recherche quel est le datastore avec le plus d'espace disque disponible
- Recherche quel est le host avec le plus dé mémoire libre.
- Création de la VM
- Démarrage de la VM
La fonction New-VMName sert à convertir le nom de la dernire vm en entier, puis d'ajouter +1, et de reconvertir en string.
Merci encore pour l'aide que j'ai eu
[code:1]
#
FONCTION STRING to INT et <->
Function New-VMName {
Param([String] $Name)
if ($Name -match \"VM000(?<Numero>\d+)\"«»)
{\"VM000$(($matches.Numero -as [int])+1)\"}
else
{ Write-Error \"New-VMName pas de correspondance pour $Name\"}
}
#
$nbvm = read-host \"Veuillez rentrer le nombre de vm à créer:\"
write-host \"Vous avez demandé la création de $nbvm VM...\"
for($i=1;$i -le $nbvm; $i++)
{
#
Deniere VM
$namevm = Get-VM -name VM00* | select Name
$lastvm = $null
foreach ($VM in $namevm)
{
if ($VM.name -gt $lastvm)
{
$lastvm = $VM.name
}
}
$NomDeLaVMaCreer = New-VMName $lastvm
write-host \"La VM $NomDeLaVMaCreer est en cours de création\"
#
datastore avec + d'espace libre
$data = Get-Datastore -Datacenter (mettre nom datacenter) | select Name,FreeSpaceMB
$LargestFreeSpace = “0”
$LargestDatastore = $null
foreach ($datastore in $data)
{
if ($Datastore.FreeSpaceMB -gt $LargestFreeSpace)
{
$LargestFreeSpace = $Datastore.FreeSpaceMB
$LargestDatastore = $Datastore.name
}
}
write-host \"Sur le datastore $LargestDatastore\"
#
host avec le plus de mémoire libre
$hosts = Get-VMHost -State Connected -Location (Get-Datacenter -Name (mettre nom datacenter)) | select Name,MemoryUsageMB
$LargestFreeMemory = “50000”
$LargestFreeHost = $null
foreach ($namehost in $hosts)
{
if($namehost.MemoryUsageMB -lt $LargestFreeMemory)
{
$LargestFreeMemory = $namehost.MemoryUsageMB
$LargestFreeHost = $namehost.name
}
}
write-host \"Le host $LargestFreeHost a le plus de mémoires libres... \"
#
code de création de la VM
New-VM -vmhost $LargestFreeHost -Name $NomDeLaVMaCreer -Template VM_TEMPLATE -Datastore $LargestDatastore -Description \"Libre\"
sleep 20
Start-VM -VM $NomDeLaVMaCreer
sleep 20
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Lopes
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 14 ans 5 mois #10369
par Lopes
Réponse de Lopes sur le sujet Re:Création auto de VM
Oups, surtout ne pas mettre les balises de couleur dans le code
<br><br>Message édité par: seiken02, à: 6/10/11 15:46
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.051 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- Création auto de VM