-
Notifications
You must be signed in to change notification settings - Fork 0
/
Creation_Vm_fast.ps1
118 lines (92 loc) · 2.77 KB
/
Creation_Vm_fast.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
param ($choix, $Nom_Ordinateur, $Groupe='ecole')
#################
##
# Variable
##
##################
$Switch = 'Interne' # nom de la carte trouvable via Get-VMNetworkAdapter -All
$CPU_SRV = 3 # Nombre de CPU a allouer par Serveurs
$CPU_CLI = 1 # Nombre de CPU a allouer par clients
$DEF_PATH = 'E:\Hyper_V\VHD' # Chemin vers le dossier hyper V
#Groupe sert a pouvoir supprimer toutes les VM concerner facilement
Clear-Host
#################
##
# verification et creation du groupe pour retrouver les Vm plus facilement par la suite
##
##################
$a = $null
$a = Get-VMGroup -Name $Groupe
if ( $a -eq $null) {
Write-Host -ForegroundColor Green 'Creation groupe => ' $Groupe
New-VMGroup -Name $Groupe -GroupType VMCollectionType
}
Write-Host -ForegroundColor DarkGray 'Groupe actuel => ' $Groupe
Write-Host ''
#################
##
# si le choix n'a pas deja été fait, il sera demander ici
##
##################
if ($choix -eq $null) {
Write-Host 'Nouveaux Serveur : 1'
Write-Host 'Nouveaux Client : 2'
Write-Host 'Nettoyage : nettoyage'
$choix = Read-Host -Prompt 'Choix'
}
if ($Nom_Ordinateur -eq $null -and $choix -ne 'nettoyage') {
$Nom = Read-Host -Prompt 'Nom de lordinateur'
}
#################
##
# changement des variables en fonctions des choix defini lors de l'appel ou de la partie precedente
##
##################
$flag = $false
If($choix -eq "1")
{
$smallPath = $DEF_PATH + '\Source\Source.Windows.SRV.vhdx'
$cpu = $CPU_SRV
$memStart = 3GB
$flag = $true
}
elseif ($choix -eq "2")
{
$smallPath = $DEF_PATH + '\Source\Source.Windows10.Pro.vhdx'
$cpu = $CPU_CLI
$memStart = 1GB
$flag = $true
}
elseif ($choix -eq "nettoyage")
{
#################
##
# partie permettant le nettoyage de toute les VM qui ont été faite
##
##################
Write-Host -ForegroundColor Green 'debut du nettoyage'
$ListVM = Get-VMGroup -Name ecole
Foreach($VM in $ListVM.VMMembers)
{
$pathVHD = Get-VHD -VMId $VM.Id
Remove-VM $VM -Force
Remove-Item $pathVHD.Path -Force
}
Write-Host -ForegroundColor Green 'Fin nettoyage'
}
Get-VMGroup -Name ecole | ForEach-Object VMMembers
#################
##
# creation du disque de differentiation et de la VM le concernant
# on change en même temps le nombre de CPU + on le rajoute au groupe
##
##################
if($flag)
{
Write-Host -ForegroundColor Green 'Creation Disque Dur'
New-VHD -ParentPath $smallPath -Path $DEF_PATH\$Groupe.$Nom.vhdx -Differencing
Write-Host -ForegroundColor Green 'Creation Machine'
$a = New-VM -VHDPath $DEF_PATH\$Groupe.$Nom.vhdx -Generation 2 -Name $Nom -MemoryStartupBytes $memStart -SwitchName Interne
Set-VMProcessor -VMName $Nom -Count $cpu
Add-VMGroupMember -Name $Groupe -VM $a
}