-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathNew-ESXi_PXE_defaultconf.ps1
50 lines (48 loc) · 1.72 KB
/
New-ESXi_PXE_defaultconf.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
function New-ESXi_PXE_defaultconf{
param(
[Parameter(Mandatory=$true)]
$DestinationFolder,
[Parameter(Mandatory=$true)]
$PXE_VMware_Folder
)
process{
$DestinationPath = $DestinationFolder + "\default"
If(Test-Path $DestinationPath){
Remove-item $DestinationPath -Force
}
#Fist part regardless of which images are available
$stream1 = [System.IO.StreamWriter] $DestinationPath
$ToWrite = 'DEFAULT menu.c32' + "`n"
$stream1.Write($ToWrite)
$ToWrite = 'MENU TITLE ESXi select your version' + "`n"
$stream1.Write($ToWrite)
$ToWrite = 'NOHALT 1' + "`n"
$stream1.Write($ToWrite)
$ToWrite = 'PROMPT 0' + "`n"
$stream1.Write($ToWrite)
$ToWrite = 'TIMEOUT 80' + "`n"
$stream1.Write($ToWrite)
#MiddlePart Depend of all images available in this environment
Get-ChildItem -path $PXE_VMware_Folder -Recurse -include Boot.cfg | foreach-object{
$PXE_VMware_Folder_modified = $PXE_VMware_Folder + "\"
$DirectoryName = ($_.DirectoryName -replace [Regex]::Escape($PXE_VMware_Folder_modified),"") -replace [Regex]::Escape("\"),"/"
$ToWrite = 'LABEL ' + $DirectoryName + "`n"
$stream1.Write($ToWrite)
$ToWrite = ' KERNEL vmware/' + $DirectoryName + '/mboot.c32' + "`n"
$stream1.Write($ToWrite)
$ToWrite = ' APPEND -c vmware/' + $DirectoryName + '/boot.cfg' + "`n"
$stream1.Write($ToWrite)
$ToWrite = ' MENU LABEL ' + $DirectoryName + ' ^Installer' + "`n"
$stream1.Write($ToWrite)
}
#Last part regardless present regardless of which images are available
$ToWrite = 'LABEL hddboot' + "`n"
$stream1.Write($ToWrite)
$ToWrite = ' LOCALBOOT 0x80' + "`n"
$stream1.Write($ToWrite)
$ToWrite = ' MENU LABEL ^Boot from local disk' + "`n"
$stream1.Write($ToWrite)
$stream1.Close()
$stream1 = $Null
}
}