<# .SYNOPSIS Customizes AutoLab PXE boot menu based on the vSphere and vCloud source files added to TFTP. .DESCRIPTION Customizes AutoLab PXE boot menu based on the vSphere and vCloud source files added to TFTP. .PARAMETER Version The Version parameter tells the script which PXE boot options to add to the PXE default menu. .EXAMPLE C:\PS> PXEMenuConfig.ps1 ESXi51 .EXAMPLE C:\PS> PXEMenuConfig.ps1 ESXi50 .EXAMPLE C:\PS> PXEMenuConfig.ps1 ESXi41 .EXAMPLE C:\PS> PXEMenuConfig.ps1 ESX41 .EXAMPLE C:\PS> PXEMenuConfig.ps1 vCloud #> param($version) . "C:\PSFunctions.ps1" switch ($version) { ESXi60 { if ((Test-Path "C:\TFTP-Root\ESXi60\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 6.0"))) { Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 6.0 option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @" LABEL Fixes Menu MENU LABEL ESXi 6.0 automated builds KERNEL pxelinux.cfg/menu.c32 APPEND pxelinux.cfg/ESXi60.menu "@ } else { Write-BuildLog "ESXi 5.5 already in PXE Menu" } } ESXi55 { if ((Test-Path "C:\TFTP-Root\ESXi55\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 5.5"))) { Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 5.5 option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @" LABEL Fixes Menu MENU LABEL ESXi 5.5 automated builds KERNEL pxelinux.cfg/menu.c32 APPEND pxelinux.cfg/ESXi55.menu "@ } else { Write-BuildLog "ESXi 5.5 already in PXE Menu" } } ESXi51 { if ((Test-Path "C:\TFTP-Root\ESXi51\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 5.1"))) { Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 5.1 option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @" LABEL Fixes Menu MENU LABEL ESXi 5.1 automated builds KERNEL pxelinux.cfg/menu.c32 APPEND pxelinux.cfg/ESXi51.menu "@ } else { Write-BuildLog "ESXi 5.1 already in PXE Menu" } } ESXi50 { if ((Test-Path "C:\TFTP-Root\ESXi50\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 5.0"))) { Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 5.0 option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @" LABEL Fixes Menu MENU LABEL ESXi 5.0 automated builds KERNEL pxelinux.cfg/menu.c32 APPEND pxelinux.cfg/ESXi50.menu "@ } } ESXi41 { if (Test-Path "C:\TFTP-Root\ESXi41\*") { Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 4.1 option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @" LABEL Fixes Menu MENU LABEL ESXi 4.1 automated builds KERNEL pxelinux.cfg/menu.c32 APPEND pxelinux.cfg/ESXi41.menu "@ Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\ESXi41.menu" -Value @" label esxi1-4 kernel /ESXi41/mboot.c32 append /ESXi41/vmkboot.gz ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx1-4.cfg --- /ESXi41/vmkernel.gz --- /ESXi41/sys.vgz --- /ESXi41/cim.vgz --- /ESXi41/ienviron.vgz --- /ESXi41/install.vgz menu Label -- Host1 Automated label esxi2-4 kernel /ESXi41/mboot.c32 append /ESXi41/vmkboot.gz ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx2-4.cfg --- /ESXi41/vmkernel.gz --- /ESXi41/sys.vgz --- /ESXi41/cim.vgz --- /ESXi41/ienviron.vgz --- /ESXi41/install.vgz menu Label -- Host2 ESXi Automated "@ } } ESX41 { if ((Test-Path "C:\TFTP-Root\ESX41\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\ESXi41.menu" | Select-String -Pattern "ESX classic"))) { Add-Content -Path "C:\buildlog.txt" -Value "Adding ESX 4.1 option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\ESXi41.menu" -Value @" label esx2-4 kernel /ESX41/vmlinuz append initrd=/ESX41/initrd.img debugLogToSerial=1 mem=512M ks=nfs:192.168.199.7:/mnt/LABVOL/Build/Automate/Hosts/esx2-4c.cfg menu Label -- Host2 ESX classic Automated "@ } } vCloud { if (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "vCloud") ) { Add-Content -Path "C:\buildlog.txt" -Value "Adding vCloud option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @" LABEL Fixes Menu MENU LABEL vCloud Director automated build KERNEL pxelinux.cfg/menu.c32 APPEND pxelinux.cfg/vCloud.menu "@ } } vCD51 { if ((Test-Path "B:\vCD_51\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" | Select-String -Pattern "vCloud Director 5.1"))){ Add-Content -Path "C:\buildlog.txt" -Value "Adding vCloud 5.1 option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" -Value @" label vCloud51 kernel /vCloud/vmlinuz append ksdevice=eth0 load_ramdisk=1 initrd=/vCloud/initrd.img network ks=nfs:nfsvers=3:192.168.199.7:/mnt/LABVOL/Build/Automate/vCloud/vcd51-ks.cfg menu Label vCloud Director 5.1 automated build (DVD iso) label vCloud51 kernel /vCloud/vmlinuz append ksdevice=eth0 load_ramdisk=1 initrd=/vCloud/initrd.img network ks=nfs:nfsvers=3:192.168.199.7:/mnt/LABVOL/Build/Automate/vCloud/vcd51-ks-min.cfg menu Label vCloud Director 5.1 automated build (minimal ISO) "@ } } vCD15 { if ((Test-Path "B:\vCD_15\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" | Select-String -Pattern "vCloud Director 1.5"))){ Add-Content -Path "C:\buildlog.txt" -Value "Adding vCloud 1.5 option to PXE menu" Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" -Value @" label vCloud15 kernel /vCloud/vmlinuz append ksdevice=eth0 load_ramdisk=1 initrd=/vCloud/initrd.img network ks=nfs:nfsvers=3:192.168.199.7:/mnt/LABVOL/Build/Automate/vCloud/vcd15-ks.cfg menu Label vCloud Director 1.5 automated build (DVD iso) label vCloud15 kernel /vCloud/vmlinuz append ksdevice=eth0 load_ramdisk=1 initrd=/vCloud/initrd.img network ks=nfs:nfsvers=3:192.168.199.7:/mnt/LABVOL/Build/Automate/vCloud/vcd15-ks-min.cfg menu Label vCloud Director 1.5 automated build (minimal iso) "@ } } }