Question
Nommage via boucle de serveurs
- Olivier
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 182
- Remerciements reçus 0
Je recherche à définir le nom de différents serveurs que je dois déployer.
Pour cela, je voudrais déployer par exemple 8 serveurs dont :
2 srv -> esx1
3 srv -> esx2
3 srv -> esx3
Les variables seraient :
ESX1 = "IP1"
ESX2 = "IP2"
ESX3 = "IP3"
Nbr_VM_ESX1 = "2"
Nbr_VM_ESX2 = "3"
Nbr_VM_ESX3 = "3"
Prefix_Name = "SRV-0"
Comment faire pour avoir le résultat résultat suivant au niveau du nom de la VM (
ESX1 = SRV01
ESX1 = SRV02
ESX2 = SRV03
ESX2 = SRV04
ESX2 = SRV05
ESX3 = SRV06
ESX3 = SRV07
ESX3 = SRV08
Ensuite, je vais utiliser le résultat de ces variables dans une boucle pour générer automatiquement mes VM via la commande
New-VM -Name $VM_Name -Template $VM_Template -VMHost $ESX1 -Datastore $DataStore -ResourcePool $vCenter_Cluster -Location $DataStore_Folder -OSCustomizationSpec $VM_CustomeSpec
Je sais pas si j'ai été clair dans ma demande mais suis prêt à donner plus de détails si nécessaire.
Merci d'avance pour vos prochaines lumières
Olivier
Pour info, j'ai déjà un bout de code qui ressemble à cela :
1..5 | Foreach {
New-vm -vmhost esx04.vmpros.local -Name FS-SVR$_ -Template WIN2008R2_Template -Datastore datastore2 -OSCustomizationspec WIN2008R2_Template
}
Le problème est que cela me nomme pour chaques ESX les serveur à partir de "0" et non pas en suivant le numéro du dernier serveur déployé sur le précédent ESX ...
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
Un ou + exemples du résultat attendu serait utile. J'ai un peu de mal à associer les infos que tu as donné avec la ligne de commande cité.Olivier écrit: Je sais pas si j'ai été clair dans ma demande mais suis prêt à donner plus de détails si nécessaire.
Il faut formater la chaîne, c'est à dire dans ton cas le numéro reçu via le pipeline :Olivier écrit: Le problème est que cela me nomme pour chaque ESX les serveur à partir de "0" et non pas en suivant le numéro du dernier serveur déployé sur le précédent ESX ...
"{0:00}" -f 1
#01
"{0:00}" -f 10
#10
"{0:000}" -f 10
#010
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Olivier
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 182
- Remerciements reçus 0
ça devrait ressembler à ça :
$Count = "8"
$Prefix = "VM-0"
$Test = @{
"VM-01" = "ESX11";
"VM-02" = "ESX11";
"VM-03" = "ESX12";
"VM-04" = "ESX12";
"VM-05" = "ESX12";
"VM-06" = "ESX13";
"VM-07" = "ESX13";
"VM-08" = "ESX13"}
1..$Count | % {$VM_Name = "$Prefix{0:D1}" -f $_} | foreach
{
Write-Host "La VM $VM_Name sera déployée sur l'ESX "$Test.value""
}
Mais en version qui fonctionne et peu-être sans devoir faire de tableau associatif...
Connexion ou Créer un compte pour participer à la conversation.
- Olivier
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 182
- Remerciements reçus 0
Je ferais les modifications du script pour modifier que le nombre de VM par ESX.
Là, j'arrive au bout de presque tout mon projet et je bloque juste sur ça :-|
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
Les hashtables rendent de grand service en Powershell, simple à construire, facile à maintenir.Olivier écrit: ... et peut-être sans devoir faire de tableau associatif
Une solution verbeuse ( à vérifier) :
$Todo=[ordered]@{
esx1=@{VmCount=2}
esx2=@{VmCount=3}
esx3=@{VmCount=3}
}
$VmPrefix = 'VM-'
#débute à 1
$Postfix=1
Foreach($Current in $Todo.GetEnumerator())
{
$ExsName=$Current.Key
$CountOfVM=$Current.Value.VmCount
Write-host "Traite '$($Current.Value.VmCount)' vm sur l'esx : $ExsName"
for ($i=1; $i -le $CountOfVM; $i++)
{
$VM_Name = "$VmPrefix{0:00}" -f $Postfix;
Write-Host "`tLa VM $VM_Name sera déployée sur l'ESX '$ExsName'"
$Postfix++
}
}
# Traite '2' vm sur l'esx : esx1
# La VM VM-01 sera déployée sur l'ESX 'esx1'
# La VM VM-02 sera déployée sur l'ESX 'esx1'
# Traite '3' vm sur l'esx : esx2
# La VM VM-03 sera déployée sur l'ESX 'esx2'
# La VM VM-04 sera déployée sur l'ESX 'esx2'
# La VM VM-05 sera déployée sur l'ESX 'esx2'
# Traite '3' vm sur l'esx : esx3
# La VM VM-06 sera déployée sur l'ESX 'esx3'
# La VM VM-07 sera déployée sur l'ESX 'esx3'
# La VM VM-08 sera déployée sur l'ESX 'esx3'
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Olivier
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 182
- Remerciements reçus 0
Excellente journée !
Olivier
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Nommage via boucle de serveurs