Version 3.0 initial commit
- Support for vSphere 6.5 & 6.7 - Support for Windows Server 2016 - Removed support for Windows Server 2008 - Added Email notification for VC & DC build. Specify destination address & SMTP server in autolmate.ini - Changed router to pfSense - Updated NAS to FreeNAS 11.1 - Support for View 7.5 - Nested 2008, 2016, Windows 7, Windows 8, & Windows 10 VMsmaster
parent
ce80804955
commit
945c87edba
|
@ -11,22 +11,11 @@ if (Test-Path C:\PSFunctions.ps1) {
|
|||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
#if ((Test-Administrator) -and (Test-Path "C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe")) {
|
||||
# Write-BuildLog " "
|
||||
# Write-BuildLog "This script should not be 'Run As Administrator'"
|
||||
# Write-BuildLog " "
|
||||
# Write-BuildLog "Just double click the shortcut"
|
||||
# Write-BuildLog " "
|
||||
# Read-Host "Press <Enter> to exit"
|
||||
# exit
|
||||
#}
|
||||
$a = (Get-Host).UI.RawUI
|
||||
$b = $a.WindowSize
|
||||
$b.Height = $a.MaxWindowSize.Height -1
|
||||
$a.WindowSize = $b
|
||||
# WASP is a 64bit plugin, the Guest Cust. PowerCLI commands are only 32bit
|
||||
#import-module C:\windows\system32\WASP.dll
|
||||
#select-window -Title "Administrator: C:\*" | set-windowposition -left 3 -top 3
|
||||
|
||||
|
||||
$Subnet = ((Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName .).IPAddress[0]).split(".")[2]
|
||||
If ($Subnet -eq "199") {
|
||||
|
@ -44,18 +33,18 @@ If ($Subnet -eq "201") {
|
|||
$SRM = $True
|
||||
}
|
||||
|
||||
if ((Get-Service vpxd).Status -eq "Starting") {
|
||||
if ((Get-Service vpxd -ErrorAction SilentlyContinue).Status -eq "Starting") {
|
||||
Write-BuildLog "The vCenter service is still starting; script will pause until service has started."
|
||||
do {
|
||||
Start-Sleep -Seconds 30
|
||||
} until ((Get-Service vpxd).Status -eq "Running")
|
||||
} elseif ((Get-Service vpxd).Status -eq "Stopped") {
|
||||
} elseif ((Get-Service vpxd -ErrorAction SilentlyContinue).Status -eq "Stopped") {
|
||||
Write-BuildLog "The vCenter service is stopped. Please verify the DC VM is powered on and databases have started."
|
||||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
|
||||
if ((Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq $null) {
|
||||
if (((Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq $null) -and ((Get-Module -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq $null)) {
|
||||
try {
|
||||
Write-BuildLog "Loading PowerCLI plugin, this may take a little while."
|
||||
Add-PSSnapin VMware.VimAutomation.Core
|
||||
|
@ -65,6 +54,10 @@ if ((Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue)
|
|||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
} else {
|
||||
$p += ";C:\Program Files (x86)\VMware\Infrastructure\PowerCLI\Modules"
|
||||
[Environment]::SetEnvironmentVariable("PSModulePath",$p)
|
||||
Import-Module "VMware.VimAutomation.Core" -ErrorAction SilentlyContinue
|
||||
}
|
||||
for ($i=1;$i -le 4; $i++) {
|
||||
$vmhost = "$HostPrefix$i.lab.local"
|
||||
|
@ -77,11 +70,10 @@ for ($i=1;$i -le 4; $i++) {
|
|||
}
|
||||
}
|
||||
If (!($MaxHosts -ge 2)){
|
||||
Write-Host "Couldn't find first two hosts to build, need host1 & host2 built before running this script"
|
||||
Write-BuildLog "Couldn't find first two hosts to build, need host1 & host2 built before running this script"
|
||||
Read-Host "Build the hosts & rerun this script"
|
||||
Exit
|
||||
}
|
||||
Write-BuildLog " "
|
||||
If (!(Test-Path "B:\*")) { Net use B: \\nas\Build}
|
||||
if (Test-Path "B:\Automate\automate.ini") {
|
||||
Write-BuildLog "Determining automate.ini settings."
|
||||
|
@ -91,21 +83,21 @@ if (Test-Path "B:\Automate\automate.ini") {
|
|||
$createxp = ((Select-String -SimpleMatch "BuildViewVM=" -Path "B:\Automate\automate.ini").line).substring(12).Trim()
|
||||
if ($createds -like "true") {
|
||||
$createds = $true
|
||||
Write-BuildLog " Datastores will be built and added to vCenter."
|
||||
Write-BuildLog "Datastores will be built and added to vCenter."
|
||||
} else {
|
||||
$createds = $false
|
||||
}
|
||||
if ($createvm -like "true") {
|
||||
$createvm = $true
|
||||
$ProdKey = ((Select-String -SimpleMatch "ProductKey=" -Path "B:\Automate\automate.ini" -List).line).substring(11).Trim()
|
||||
Write-BuildLog " Windows 2003 VM for Lab will be created."
|
||||
Write-BuildLog "Windows 2003 VM for Lab will be created."
|
||||
} else {
|
||||
$createvm = $false
|
||||
}
|
||||
if ($createxp -like "true") {
|
||||
$createxp = $true
|
||||
$XPKey = ((Select-String -SimpleMatch "ViewVMProductKey=" -Path "B:\Automate\automate.ini").line).substring(17)
|
||||
Write-BuildLog " Windows XP VM for VMware View Lab to be built."
|
||||
Write-BuildLog "Windows XP VM for VMware View Lab to be built."
|
||||
} else {
|
||||
$createxp = $false
|
||||
}
|
||||
|
@ -196,9 +188,7 @@ for ($i=1;$i -le $MaxHosts; $i++) {
|
|||
}
|
||||
Start-Sleep 5
|
||||
While ((Get-VMHost $VMHost).ConnectionState -ne "Connected"){
|
||||
Write-BuildLog " "
|
||||
Write-BuildLog $VMHost " is not yet connected. Pausing for 5 seconds."
|
||||
Write-BuildLog " "
|
||||
Start-Sleep 5
|
||||
}
|
||||
$VMHostObj = Get-VMHost $VMHost
|
||||
|
@ -274,7 +264,7 @@ for ($i=1;$i -le $MaxHosts; $i++) {
|
|||
|
||||
Write-BuildLog "Restarting all hosts for consistency. This will take a few minutes."
|
||||
$null = Get-VMHost -location $ClusterName | Restart-VMHost -confirm:$false -Force
|
||||
Write-Host "Wait until all hosts have stopped pinging"
|
||||
Write-BuildLog "Wait until all hosts have stopped pinging"
|
||||
$PingStatus = @()
|
||||
for ($i=1;$i -le $MaxHosts; $i++) {$PingStatus +=$True}
|
||||
do {
|
||||
|
@ -291,7 +281,7 @@ do {
|
|||
If ($PingStatus[$I-1] -eq $True) {$StayHere = $True}
|
||||
}
|
||||
} while ($StayHere)
|
||||
Write-Host "Wait until all hosts are pinging"
|
||||
Write-BuildLog "Wait until all hosts are pinging"
|
||||
do {
|
||||
Start-Sleep -Seconds 1
|
||||
$ping = new-object System.Net.NetworkInformation.Ping
|
||||
|
@ -306,7 +296,7 @@ do {
|
|||
If ($PingStatus[$I-1] -eq $False) {$StayHere = $True}
|
||||
}
|
||||
} while ($StayHere)
|
||||
Write-Host "Wait until all hosts are Connected"
|
||||
Write-BuildLog "Wait until all hosts are Connected"
|
||||
for ($i=1;$i -le $MaxHosts; $i++) {$PingStatus +=$False}
|
||||
do {
|
||||
Start-Sleep -Seconds 1
|
||||
|
@ -321,7 +311,7 @@ do {
|
|||
If ($PingStatus[$I-1] -eq $False) {$StayHere = $True}
|
||||
}
|
||||
} while ($StayHere)
|
||||
Write-Host "Wait 2 minutes so last host is properly up"
|
||||
Write-BuildLog "Wait 2 minutes so last host is properly up"
|
||||
start-sleep 120
|
||||
If ($SRM -ne $True){
|
||||
if (((Get-OSCustomizationSpec | where {$_.Name -eq "Windows"}) -eq $null) -and ($ProdKey -ne $null) ){
|
||||
|
@ -378,131 +368,144 @@ If ($SRM -ne $True){
|
|||
$Cluster = Get-View $Cluster
|
||||
$null = $Cluster.ReconfigureComputeResource_Task($spec, $true)
|
||||
Write-BuildLog "Waiting two minutes for HA to complete configuration."
|
||||
$Datastore = Get-Datastore -VMhost $vmHost -name "NFS01"
|
||||
Start-Sleep -Seconds 120
|
||||
|
||||
if (!(Get-PSDrive -Name NFS01 -ErrorAction "SilentlyContinue")) {
|
||||
$null = New-PSDrive -Name NFS01 -PSProvider ViMdatastore -Root '\' -Location $Datastore
|
||||
}
|
||||
$VMHostObj = Get-VMHost $VMHost
|
||||
$VMName="Template2012"
|
||||
if (($CreateVM) -and ((Get-VM -name $VMName -ErrorAction "SilentlyContinue") -eq $null ) -and (test-path "\\192.168.199.7\build\Win2012.ISO")) {
|
||||
$Datastore = Get-Datastore -VMhost $vmHost -name "NFS01"
|
||||
Start-Sleep -Seconds 2
|
||||
if (!(Get-PSDrive -Name NFS01 -ErrorAction "SilentlyContinue")) {
|
||||
$null = New-PSDrive -Name NFS01 -PSProvider ViMdatastore -Root '\' -Location $Datastore
|
||||
}
|
||||
#Create new VM if existing VM or template doesn't exist
|
||||
if (!(Test-Path NFS01:\$VMName\$VMName.vmdk)) {
|
||||
Write-BuildLog "Creating Template2012 VM as Windows Server 2012"
|
||||
If ((Get-vmhost)[0].version -lt "5.5.0"){
|
||||
$MyVM = New-VM -Name $VMName -VMhost $vmHost -datastore $Datastore -NumCPU 1 -MemoryMB 768 -DiskMB 16384 -DiskStorageFormat Thin -GuestID windows8Server64Guest
|
||||
get-networkadapter $MyVM |set-networkadapter -type e1000 -confirm:$false
|
||||
} Else {
|
||||
$MyVM = New-VM -Name $VMName -VMhost $vmHost -datastore $Datastore -NumCPU 1 -MemoryMB 768 -DiskMB 16384 -DiskStorageFormat Thin -GuestID windows8Server64Guest -Version "v8"
|
||||
}
|
||||
$null = New-CDDrive -VM $MyVM -ISOPath "[Build] /Win2012.ISO" -StartConnected
|
||||
$null = New-FloppyDrive -VM $MyVM -FloppyImagePath "[Build] Automate/BootFloppies/Nested2012.flp" -StartConnected
|
||||
$strBootHDiskDeviceName = "Hard disk 1"
|
||||
$viewVM = Get-View -ViewType VirtualMachine -Property Name, Config.Hardware.Device -Filter @{"Name" = "^$VMName$"}
|
||||
## get the VirtualDisk device, then grab its Key (DeviceKey, used later)
|
||||
$intHDiskDeviceKey = ($viewVM.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq $strBootHDiskDeviceName}).Key
|
||||
## bootable Disk BootOption device, for use in setting BootOrder (the corresponding VirtualDisk device is bootable, assumed)
|
||||
$oBootableHDisk = New-Object -TypeName VMware.Vim.VirtualMachineBootOptionsBootableDiskDevice -Property @{"DeviceKey" = $intHDiskDeviceKey}
|
||||
## bootable CDROM device (per the docs, the first CDROM with bootable media found is used)
|
||||
$oBootableCDRom = New-Object -Type VMware.Vim.VirtualMachineBootOptionsBootableCdromDevice
|
||||
## create the VirtualMachineConfigSpec with which to change the VM's boot order
|
||||
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{"BootOptions" = New-Object VMware.Vim.VirtualMachineBootOptions -Property @{BootOrder = $oBootableCDRom, $oBootableHDisk}}
|
||||
$null = $viewVM.ReconfigVM_Task($spec)
|
||||
Write-BuildLog "Powering on VM and installing Windows."
|
||||
$null = Start-VM $MyVM
|
||||
} else {
|
||||
Write-BuildLog "Found existing WinTemplate."
|
||||
if (Test-Path NFS01:\$VMName\$VMName.vmtx) {
|
||||
Write-BuildLog "Registering existing Template2012 template."
|
||||
$vmxFile = Get-Item NFS01:\$VMName\$VMName.vmtx
|
||||
$null = New-Template -VMHost $VMHost -TemplateFilePath $vmxFile.DatastoreFullPath
|
||||
Write-BuildLog "Existing WinTemplate Template added to inventory."
|
||||
$HostVer = (([int]((($VMHostObj.Version.Split("."))[0])) *10) + [int]($VMHostObj.Version.Split("."))[1])
|
||||
foreach ($os in ("2016","2012", "2008", "2K3", "10", "8", "7", "XP")){
|
||||
$VMName=("Template" + $OS)
|
||||
if (($CreateVM) -and ((Get-VM -name $VMName -ErrorAction "SilentlyContinue") -eq $null ) -and (test-path ("\\192.168.199.7\build\Win" + $OS + ".iso"))) {
|
||||
#Create new VM if existing VM or template doesn't exist
|
||||
if (!(Test-Path NFS01:\$VMName\$VMName.vmdk)) {
|
||||
$Go = $False
|
||||
Switch ($OS) {
|
||||
"2016" {
|
||||
$GuestID = "windows9Server64Guest"
|
||||
$GuestRAM = 768
|
||||
$GuestHDD = 16384
|
||||
$GuestMinHost = 60
|
||||
$GuestMaxHost = 99
|
||||
if (($HostVer -ge $GuestMinHost) -and ($HostVer -le $GuestMaxHost)) {
|
||||
$Go = $True
|
||||
$VMHWVer = "v11"
|
||||
}
|
||||
}"2012" {
|
||||
$GuestID = "windows8Server64Guest"
|
||||
$GuestRAM = 768
|
||||
$GuestHDD = 16384
|
||||
$GuestMinHost = 50
|
||||
$GuestMaxHost = 99
|
||||
if (($HostVer -ge $GuestMinHost) -and ($HostVer -le $GuestMaxHost)) {
|
||||
$Go = $True
|
||||
$VMHWVer = "v8"
|
||||
}
|
||||
} "2008" {
|
||||
$GuestID = "windows7Server64Guest"
|
||||
$GuestRAM = 768
|
||||
$GuestHDD = 16384
|
||||
$GuestMinHost = 40
|
||||
$GuestMaxHost = 99
|
||||
if (($HostVer -ge $GuestMinHost) -and ($HostVer -le $GuestMaxHost)) {
|
||||
$Go = $True
|
||||
$VMHWVer = "v7"
|
||||
}
|
||||
} "2K3" {
|
||||
$GuestID = "winNetStandard64Guest"
|
||||
$GuestRAM = 384
|
||||
$GuestHDD = 3072
|
||||
$GuestMinHost = 30
|
||||
$GuestMaxHost = 99
|
||||
if (($HostVer -ge $GuestMinHost) -and ($HostVer -le $GuestMaxHost)) {
|
||||
$Go = $True
|
||||
$VMHWVer = "v7"
|
||||
}
|
||||
} "10" {
|
||||
$GuestID = "windows9_64Guest"
|
||||
$GuestRAM = 768
|
||||
$GuestHDD = 16384
|
||||
$GuestMinHost = 60
|
||||
$GuestMaxHost = 99
|
||||
if (($HostVer -ge $GuestMinHost) -and ($HostVer -le $GuestMaxHost)) {
|
||||
$Go = $True
|
||||
$VMHWVer = "v11"
|
||||
}
|
||||
} "8" {
|
||||
$GuestID = "windows8_64Guest"
|
||||
$GuestRAM = 768
|
||||
$GuestHDD = 16384
|
||||
$GuestMinHost = 50
|
||||
$GuestMaxHost = 99
|
||||
if (($HostVer -ge $GuestMinHost) -and ($HostVer -le $GuestMaxHost)) {
|
||||
$Go = $True
|
||||
$VMHWVer = "v8"
|
||||
}
|
||||
} "7" {
|
||||
$GuestID = "windows7_64Guest"
|
||||
$GuestRAM = 768
|
||||
$GuestHDD = 16384
|
||||
$GuestMinHost = 40
|
||||
$GuestMaxHost = 99
|
||||
if (($HostVer -ge $GuestMinHost) -and ($HostVer -le $GuestMaxHost)) {
|
||||
$Go = $True
|
||||
$VMHWVer = "v7"
|
||||
}
|
||||
} "XP" {
|
||||
$GuestID = "winXPProGuest"
|
||||
$GuestRAM = 384
|
||||
$GuestHDD = 3072
|
||||
$GuestMinHost = 30
|
||||
$GuestMaxHost = 60
|
||||
if (($HostVer -ge $GuestMinHost) -and ($HostVer -le $GuestMaxHost)) {
|
||||
$Go = $True
|
||||
$VMHWVer = "v7"
|
||||
}
|
||||
}
|
||||
}
|
||||
If ($Go) {
|
||||
If ((Get-vmhost)[0].version -lt "5.5.0"){
|
||||
Write-BuildLog "Creating $VMName VM as Windows $OS"
|
||||
$MyVM = New-VM -Name $VMName -VMhost $vmHost -datastore $Datastore -NumCPU 1 -MemoryMB $GuestRAM -DiskMB $GuestHDD -DiskStorageFormat Thin -GuestID $GuestID
|
||||
get-networkadapter $MyVM |set-networkadapter -type e1000 -confirm:$false
|
||||
} Else {
|
||||
Write-BuildLog "Creating $VMName VM as Windows $OS"
|
||||
$MyVM = New-VM -Name $VMName -VMhost $vmHost -datastore $Datastore -NumCPU 1 -MemoryMB $GuestRAM -DiskMB $GuestHDD -DiskStorageFormat Thin -GuestID $GuestID -Version $VMHWVer
|
||||
}
|
||||
$BuildISO = "[Build]/Auto" + $OS + ".iso"
|
||||
if (test-path ("\\192.168.199.7\build\Auto" + $OS + ".iso")) {
|
||||
$null = New-CDDrive -VM $MyVM -ISOPath $BuildISO -StartConnect
|
||||
} else {
|
||||
$BuildISO = "[Build]/Win" + $OS + ".iso"
|
||||
$null = New-CDDrive -VM $MyVM -ISOPath $BuildISO -StartConnected
|
||||
$null = New-FloppyDrive -VM $MyVM -FloppyImagePath ("[Build] Automate/BootFloppies/Nested" + $OS + ".flp") -StartConnected
|
||||
}
|
||||
$strBootHDiskDeviceName = "Hard disk 1"
|
||||
$viewVM = Get-View -ViewType VirtualMachine -Property Name, Config.Hardware.Device -Filter @{"Name" = "^$VMName$"}
|
||||
$intHDiskDeviceKey = ($viewVM.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq $strBootHDiskDeviceName}).Key
|
||||
$oBootableHDisk = New-Object -TypeName VMware.Vim.VirtualMachineBootOptionsBootableDiskDevice -Property @{"DeviceKey" = $intHDiskDeviceKey}
|
||||
$oBootableCDRom = New-Object -Type VMware.Vim.VirtualMachineBootOptionsBootableCdromDevice
|
||||
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{"BootOptions" = New-Object VMware.Vim.VirtualMachineBootOptions -Property @{BootOrder = $oBootableCDRom, $oBootableHDisk}}
|
||||
$null = $viewVM.ReconfigVM_Task($spec)
|
||||
$null = Start-VM $MyVM
|
||||
} else {
|
||||
Write-BuildLog "Not creating Windows $OS VM"
|
||||
}
|
||||
} else {
|
||||
Write-BuildLog "Found existing $VMName."
|
||||
if (Test-Path NFS01:\$VMName\$VMName.vmtx) {
|
||||
Write-BuildLog "Registering existing Template$os template."
|
||||
$vmxFile = Get-Item NFS01:\$VMName\$VMName.vmtx
|
||||
$null = New-Template -VMHost $VMHost -TemplateFilePath $vmxFile.DatastoreFullPath
|
||||
Write-BuildLog "Existing $VMName Template added to inventory."
|
||||
}
|
||||
}
|
||||
Start-Sleep -Seconds 2
|
||||
}
|
||||
Start-Sleep -Seconds 2
|
||||
$null = Remove-PSDrive NFS01
|
||||
}
|
||||
$null = Remove-PSDrive NFS01
|
||||
|
||||
|
||||
if ($vmhostObj.version.split(".")[0] -eq "4") {
|
||||
$Datastore = Get-Datastore -VMhost $vmHost -name "iSCSI2"
|
||||
$VMName="WinTemplate4"
|
||||
} else {
|
||||
$Datastore = Get-Datastore -VMhost $vmHost -name "iSCSI1"
|
||||
$VMName="WinTemplate"
|
||||
}
|
||||
|
||||
if (($CreateVM) -and ((Get-VM -name $VMName -ErrorAction "SilentlyContinue") -eq $null ) -and (test-path "\\192.168.199.7\build\Auto2K3.ISO")) {
|
||||
if (!(Get-PSDrive -Name iSCSI1 -ErrorAction "SilentlyContinue")) {
|
||||
$null = New-PSDrive -Name iSCSI1 -PSProvider ViMdatastore -Root '\' -Location $Datastore
|
||||
}
|
||||
Start-Sleep -Seconds 2
|
||||
#Create new VM if existing VM or template doesn't exist
|
||||
if (!(Test-Path iSCSI1:\$VMName\$VMName.vmdk)) {
|
||||
Write-BuildLog "Creating WinTemplate VM Windows Server 2003."
|
||||
If ((Get-vmhost)[0].version -lt "5.5.0"){
|
||||
$MyVM = New-VM -Name $VMName -VMhost $vmHost -datastore $Datastore -NumCPU 1 -MemoryMB 384 -DiskMB 3072 -DiskStorageFormat Thin -GuestID winNetEnterpriseGuest
|
||||
} Else {
|
||||
$MyVM = New-VM -Name $VMName -VMhost $vmHost -datastore $Datastore -NumCPU 1 -MemoryMB 384 -DiskMB 3072 -DiskStorageFormat Thin -GuestID winNetEnterpriseGuest -Version "v8"
|
||||
}
|
||||
$null = New-CDDrive -VM $MyVM -ISOPath "[Build] /Auto2K3.iso" -StartConnected
|
||||
Write-BuildLog "Powering on VM and installing Windows."
|
||||
$null = Start-VM $MyVM
|
||||
} else {
|
||||
Write-BuildLog "Found existing WinTemplate."
|
||||
if (Test-Path iSCSI1:\$VMName\$VMName.vmtx) {
|
||||
Write-BuildLog "Registering existing WinTemplate template."
|
||||
$vmxFile = Get-Item iSCSI1:\$VMName\$VMName.vmtx
|
||||
$null = New-Template -VMHost $VMHost -TemplateFilePath $vmxFile.DatastoreFullPath
|
||||
Write-BuildLog "Existing WinTemplate Template added to inventory."
|
||||
}
|
||||
}
|
||||
Start-Sleep -Seconds 2
|
||||
$null = Remove-PSDrive iSCSI1
|
||||
}
|
||||
$VMName = "WinXP"
|
||||
$Datastore = Get-Datastore "iSCSI2"
|
||||
if (($CreateXP) -and ((Get-VM -name $VMName -ErrorAction "SilentlyContinue") -eq $null ) -and (test-path "\\192.168.199.7\build\AutoXP.iso")) {
|
||||
if (!(Get-PSDrive -Name iSCSI2 -ErrorAction "SilentlyContinue")) {
|
||||
$null = New-PSDrive -Name iSCSI2 -PSProvider ViMdatastore -Root '\' -Location $Datastore
|
||||
}
|
||||
Start-Sleep -Seconds 2
|
||||
#Create new VM if existing VM or template doesn't exist
|
||||
if (!(Test-Path iSCSI2:\$VMName\$VMName.vmdk)) {
|
||||
Write-BuildLog "Creating Windows XP VM for View."
|
||||
If ((Get-vmhost)[0].version -lt "5.5.0"){
|
||||
$MyVM = New-VM -Name $VMName -VMhost $vmHost -datastore $Datastore -NumCPU 1 -MemoryMB 384 -GuestID winXPProGuest
|
||||
} Else {
|
||||
$MyVM = New-VM -Name $VMName -VMhost $vmHost -datastore $Datastore -NumCPU 1 -MemoryMB 384 -GuestID winXPProGuest -Version "v8"
|
||||
}
|
||||
$null = New-CDDrive -VM $MyVM -ISOPath "[Build] /AutoXP.iso" -StartConnected
|
||||
$null = New-FloppyDrive -VM $MyVM -FloppyImagePath "[Build] Automate/BootFloppies/vmscsi-1.2.0.4.flp" -StartConnected
|
||||
$strBootHDiskDeviceName = "Hard disk 1"
|
||||
$viewVM = Get-View -ViewType VirtualMachine -Property Name, Config.Hardware.Device -Filter @{"Name" = "^$VMName$"}
|
||||
## get the VirtualDisk device, then grab its Key (DeviceKey, used later)
|
||||
$intHDiskDeviceKey = ($viewVM.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq $strBootHDiskDeviceName}).Key
|
||||
## bootable Disk BootOption device, for use in setting BootOrder (the corresponding VirtualDisk device is bootable, assumed)
|
||||
$oBootableHDisk = New-Object -TypeName VMware.Vim.VirtualMachineBootOptionsBootableDiskDevice -Property @{"DeviceKey" = $intHDiskDeviceKey}
|
||||
## bootable CDROM device (per the docs, the first CDROM with bootable media found is used)
|
||||
$oBootableCDRom = New-Object -Type VMware.Vim.VirtualMachineBootOptionsBootableCdromDevice
|
||||
## create the VirtualMachineConfigSpec with which to change the VM's boot order
|
||||
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{"BootOptions" = New-Object VMware.Vim.VirtualMachineBootOptions -Property @{BootOrder = $oBootableCDRom, $oBootableHDisk}}
|
||||
$null = $viewVM.ReconfigVM_Task($spec)
|
||||
$Null = Start-VM $MyVM
|
||||
} else {
|
||||
Write-BuildLog "Found existing WinXP."
|
||||
if (Test-Path iSCSI1:\$VMName\$VMName.vmtx) {
|
||||
Write-BuildLog "Registering existing WinTemplate template."
|
||||
$vmxFile = Get-Item iSCSI2:\$VMName\$VMName.vmtx
|
||||
$null = New-Template -VMHost $VMHost -TemplateFilePath $vmxFile.DatastoreFullPath
|
||||
Write-BuildLog "Existing WinTemplate Template added to inventory."
|
||||
}
|
||||
}
|
||||
Start-Sleep -Seconds 2
|
||||
$null = Remove-PSDrive iSCSI2
|
||||
}
|
||||
$VMName = "TTYLinux"
|
||||
if ((Get-VM -name $VMName -ErrorAction "SilentlyContinue") -eq $null ) {
|
||||
Write-BuildLog "Registering existing tiny TTYLinux VM."
|
||||
|
@ -526,10 +529,6 @@ If ($SRM -ne $True){
|
|||
$null = Remove-PSDrive iSCSI3
|
||||
}
|
||||
}
|
||||
Write-BuildLog " "
|
||||
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
if (Test-Path "C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe") {
|
||||
Read-Host " Configuration complete, press <Enter> to continue."
|
||||
}
|
||||
exit
|
||||
#Read-Host " All OK?"
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,10 +1,10 @@
|
|||
@echo off
|
||||
echo *************************
|
||||
echo *
|
||||
echo **
|
||||
echo * Begining Build.cmd as %userdomain%\%username%
|
||||
echo * Begining Build.cmd as %userdomain%\%username% >> c:\buildlog.txt
|
||||
echo * Connect to build share
|
||||
net use B: \\192.168.199.7\Build >> c:\buildlog.txt
|
||||
type b:\automate\version.txt >> c:\buildlog.txt
|
||||
if not exist B:\ net use B: \\192.168.199.7\Build
|
||||
if not exist c:\temp\ md c:\temp
|
||||
regedit -s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
regedit -s B:\Automate\_Common\ExplorerView.reg
|
||||
|
@ -13,11 +13,13 @@ regedit -s b:\Automate\_Common\Nested.reg
|
|||
REG ADD "HKCU\Environment" /V SEE_MASK_NOZONECHECKS /T REG_SZ /D 1 /F
|
||||
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /V SEE_MASK_NOZONECHECKS /T REG_SZ /D 1 /F
|
||||
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments " /V SaveZoneInformation /T REG_DWORD /D 1 /F
|
||||
copy B:\automate\_Common\wasp.dll C:\windows\system32
|
||||
echo * Activate Windows >> c:\buildlog.txt
|
||||
cscript //B "%windir%\system32\slmgr.vbs" /ato
|
||||
copy B:\Automate\PSFunctions.ps1 C:\
|
||||
copy B:\Automate\validate.ps1 C:\
|
||||
copy B:\Automate\ViewSetup.ps1 C:\
|
||||
copy B:\Automate\%computername%\Build.ps1 c:\
|
||||
echo * Starting PowerShell script for Phase 2 completion
|
||||
echo * Starting PowerShell script for Phase 2 completion >> C:\buildlog.txt
|
||||
powershell c:\Build.ps1
|
||||
if exist C:\Build.ps1 del c:\Build.ps1
|
|
@ -6,30 +6,56 @@ if (Test-Path C:\PSFunctions.ps1) {
|
|||
exit
|
||||
}
|
||||
|
||||
$a = (Get-Host).UI.RawUI
|
||||
$a.WindowTitle = "CS1 Build Automation"
|
||||
$b = $a.WindowSize
|
||||
$b.Height = $a.MaxWindowSize.Height - 1
|
||||
$a.WindowSize = $b
|
||||
Import-Module C:\windows\system32\WASP.dll
|
||||
Select-Window -Title "CS1 Build Automation" | set-windowposition -left 75 -top 3
|
||||
|
||||
if (Test-Path "B:\Automate\automate.ini") {
|
||||
Write-BuildLog "Determining automate.ini settings."
|
||||
$viewinstall = ((Select-String -SimpleMatch "ViewInstall=" -Path "B:\Automate\automate.ini").line).substring(12)
|
||||
Write-BuildLog " VMware View install set to $viewinstall."
|
||||
$timezone = ((Select-String -SimpleMatch "TZ=" -Path "B:\Automate\automate.ini").line).substring(3)
|
||||
Write-BuildLog " Timezone set to $timezone."
|
||||
Write-BuildLog "Timezone set to $timezone."
|
||||
tzutil /s "$timezone"
|
||||
$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "B:\Automate\automate.ini").line).substring(9)
|
||||
$emailto = ((Select-String -SimpleMatch "emailto=" -Path "B:\Automate\automate.ini").line).substring(8)
|
||||
$SmtpServer = ((Select-String -SimpleMatch "SmtpServer=" -Path "B:\Automate\automate.ini").line).substring(11)
|
||||
|
||||
}
|
||||
If (([System.Environment]::OSVersion.Version.Major -eq 6) -and ([System.Environment]::OSVersion.Version.Minor -ge 2)) {
|
||||
if ((Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain -eq $False) {
|
||||
Write-BuildLog "Joining domain"
|
||||
B:\automate\_Common\Autologon administrator lab $AdminPWD
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f
|
||||
$password = $AdminPWD | ConvertTo-SecureString -asPlainText -Force
|
||||
$credential = New-Object System.Management.Automation.PSCredential("administrator",$password)
|
||||
$null = Add-Computer -DomainName "lab.local" -Credential $credential -restart
|
||||
read-host "Wait for restart"
|
||||
} else {
|
||||
regedit /s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
Write-BuildLog "Change default local administrator password"
|
||||
net user administrator $AdminPWD
|
||||
B:\automate\_Common\Autologon administrator lab $AdminPWD
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
}
|
||||
If ((([System.Environment]::OSVersion.Version.Major *10) + [System.Environment]::OSVersion.Version.Minor) -ge 62) {
|
||||
Write-BuildLog "Disabling autorun of ServerManager at logon."
|
||||
Start-Process schtasks -ArgumentList ' /Change /TN "\Microsoft\Windows\Server Manager\ServerManager" /DISABLE' -Wait -Verb RunAs
|
||||
Start-Process schtasks -ArgumentList ' /Change /TN "\Microsoft\Windows\Server Manager\ServerManager" /DISABLE' -Wait -Verb RunAs
|
||||
Write-BuildLog "Disabling screen saver"
|
||||
set-ItemProperty -path 'HKCU:\Control Panel\Desktop' -name ScreenSaveActive -value 0
|
||||
Write-BuildLog "Install admin tools"
|
||||
Add-WindowsFeature RSAT-Feature-Tools,RSAT-DHCP,RSAT-DNS-Server,RSAT-AD-AdminCenter
|
||||
Write-BuildLog "Enable remote management through firewall"
|
||||
Netsh firewall set service RemoteAdmin
|
||||
Netsh advfirewall set currentprofile settings remotemanagement enable
|
||||
Write-BuildLog "Setup Firewall"
|
||||
netsh advfirewall firewall add rule name="All ICMP V4" dir=in action=allow protocol=icmpv4
|
||||
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
|
||||
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
|
||||
}
|
||||
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
$Files = get-childitem "b:\view$viewinstall"
|
||||
for ($i=0; $i -lt $files.Count; $i++) {
|
||||
If ($Files[$i].Name -like "VMware-viewconnectionserver*") {$Installer = $Files[$i].FullName}
|
||||
|
@ -38,68 +64,82 @@ Switch ($ViewInstall) {
|
|||
50 {
|
||||
Write-BuildLog "Install View 5.0 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList " /s /v'/qn VDM_SERVER_INSTANCE_TYPE=1'"
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
copy b:\automate\ViewSetup.ps1 c:\
|
||||
start-sleep 60
|
||||
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\ViewSetup.ps1 >> c:\buildlog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
51 {
|
||||
Write-BuildLog "Install View 5.1 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qb VDM_SERVER_INSTANCE_TYPE=1 VDM_SERVER_RECOVERY_PWD=VMware1! VDM_SERVER_RECOVERY_PWD2=VMware1! VDM_INITIAL_ADMIN_OPTION=1 CEIP_OPTIN=0"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
52 {
|
||||
Write-BuildLog "Install View 5.2 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qb VDM_SERVER_INSTANCE_TYPE=1 VDM_SERVER_RECOVERY_PWD=VMware1! VDM_SERVER_RECOVERY_PWD2=VMware1! VDM_INITIAL_ADMIN_OPTION=1 CEIP_OPTIN=0"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
53 {
|
||||
Write-BuildLog "Install View 5.3 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=1 VDM_SERVER_RECOVERY_PWD=VMware1! VDM_SERVER_RECOVERY_PWD2=VMware1! VDM_INITIAL_ADMIN_OPTION=1 CEIP_OPTIN=0"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
60 {
|
||||
Write-BuildLog "Install View 6.0 Connection Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=1 FWCHOICE=1 VDM_INITIAL_ADMIN_SID=S-1-5-32-544 VDM_SERVER_RECOVERY_PWD=VMware1 VDM_SERVER_RECOVERY_PWD_REMINDER=First"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
if (([System.Environment]::OSVersion.Version.Major -eq 6) -and ([System.Environment]::OSVersion.Version.Minor -ge 3)) {
|
||||
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}else {
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
}
|
||||
70 {
|
||||
Write-BuildLog "Install View 7.0 Connection Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=1 FWCHOICE=1 VDM_INITIAL_ADMIN_SID=S-1-5-32-544 VDM_SERVER_RECOVERY_PWD=VMware1 VDM_SERVER_RECOVERY_PWD_REMINDER=First"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
if ([System.Environment]::OSVersion.Version.Major -ge 9) {
|
||||
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}else {
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
} 75 {
|
||||
Write-BuildLog "Install View 7.5 Connection Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/v"/qb VDM_SERVER_INSTANCE_TYPE=1 FWCHOICE=1 VDM_INITIAL_ADMIN_SID=S-1-5-32-544 VDM_SERVER_RECOVERY_PWD=VMware1 VDM_SERVER_RECOVERY_PWD_REMINDER=First VDM_IP_PROTOCOL_USAG=IPv4 HTMLACCESS=1"'
|
||||
if ([System.Environment]::OSVersion.Version.Major -ge 9) {
|
||||
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}else {
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
browserAndFlash
|
||||
$PCLIver = deployPowerCLI
|
||||
if (($PCLIver -ge 65) -and ($viewinstall -ge 70) -and ([System.Environment]::OSVersion.Version.Major -ge 10)){
|
||||
copy-item -path b:\automate\cs1\ConfigView.ps1 -destination c:\
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Config /t REG_SZ /d 'powershell.exe c:\ConfigView.ps1' /f
|
||||
} else {
|
||||
start-process powershell.exe -ArgumentList " C:\viewsetup.ps1" -redirectstandardoutput "C:\ViewLog.txt" -Wait
|
||||
Get-Content "C:\ViewLog.txt" | Out-File "C:\BuildLog.txt" -Append
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
Write-BuildLog "Emailing log"
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
$mailmessage.To.add($emailto)
|
||||
$Summary = "Completed AutoLab VM build.`r`n"
|
||||
$Summary += "The build of $env:computername has finished, installing VMware Tools and rebooting`r`n"
|
||||
$Summary += "The build log is attached`r`n"
|
||||
$mailmessage.Subject = "$env:computername VM build finished"
|
||||
$mailmessage.Body = $Summary
|
||||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
$mailmessage.dispose()
|
||||
$SMTPClient.dispose()
|
||||
}
|
||||
}
|
||||
Write-BuildLog "Install Flash Player"
|
||||
Start-Process msiexec -wait -ArgumentList " /i b:\Automate\_Common\install_flash_player_11_active_x.msi /qn"
|
||||
Write-BuildLog "Setup Firewall"
|
||||
netsh advfirewall firewall add rule name="All ICMP V4" dir=in action=allow protocol=icmpv4
|
||||
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
|
||||
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
|
||||
Write-BuildLog "Setup persistet route to other subnet for SRM and View"
|
||||
route add 192.168.201.0 mask 255.255.255.0 192.168.199.254 -p
|
||||
Write-BuildLog "Cleanup"
|
||||
regedit /s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
Write-BuildLog "Change default local administrator password"
|
||||
net user administrator $AdminPWD
|
||||
B:\automate\_Common\Autologon vi-admin lab $AdminPWD
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
Write-BuildLog "Install VMware Tools"
|
||||
b:\VMTools\Setup64.exe /s /v "/qn"
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
$mailmessage.To.add($emailto)
|
||||
$Summary = "Completed AutoLab VM build.`r`n"
|
||||
$Summary += "The build of $env:computername has finished, installing VMware Tools and rebooting`r`n"
|
||||
$Summary += "The build log is attached`r`n"
|
||||
$mailmessage.Subject = "$env:computername VM build finished"
|
||||
$mailmessage.Body = $Summary
|
||||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
}
|
||||
Read-Host "Rebooting after VMTools Install"
|
||||
|
|
|
@ -0,0 +1,156 @@
|
|||
If (-Not(Test-Path -path "b:\")) { net use B: \\192.168.199.7\Build}
|
||||
. "C:\PSFunctions.ps1"
|
||||
|
||||
$userID = "vi-admin@lab.local"
|
||||
$VCHost = 'vc.lab.local'
|
||||
$url = 'https://' + $VCHost
|
||||
$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "B:\Automate\automate.ini").line).substring(9)
|
||||
$secpasswd = ConvertTo-SecureString $AdminPWD -AsPlainText -Force
|
||||
$cred = New-Object System.Management.Automation.PSCredential ($userID, $secpasswd)
|
||||
$emailto = ((Select-String -SimpleMatch "emailto=" -Path "B:\Automate\automate.ini").line).substring(8)
|
||||
$SmtpServer = ((Select-String -SimpleMatch "SmtpServer=" -Path "B:\Automate\automate.ini").line).substring(11)
|
||||
write-BuildLog "Make sure there are no installs underway"
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
write-BuildLog "Waiting two minutes for View services to settle"
|
||||
Write-Host "You can start building CS2 at this stage"
|
||||
start-sleep 120
|
||||
|
||||
function Get-MapEntry {
|
||||
param([Parameter(Mandatory = $true)] $Key, [Parameter(Mandatory = $true)] $Value)
|
||||
$update = New-Object VMware.Hv.MapEntry
|
||||
$update.key = $key
|
||||
$update.value = $value
|
||||
return $update
|
||||
}
|
||||
|
||||
# This script part modified from https://www.sddcmaster.com/2018/02/horizon-view-automation-with-powershell.html
|
||||
|
||||
Write-BuildLog "Add VC certificates to local certificate stores"
|
||||
[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
|
||||
[System.Uri] $u = New-Object System.Uri($url)
|
||||
[Net.ServicePoint] $sp = [Net.ServicePointManager]::FindServicePoint($u);
|
||||
[System.Guid] $groupName = [System.Guid]::NewGuid()
|
||||
[Net.HttpWebRequest] $req = [Net.WebRequest]::create($url)
|
||||
$req.Method = "GET"
|
||||
$req.Timeout = 600000 # = 10 minutes
|
||||
$req.ConnectionGroupName = $groupName
|
||||
[Net.HttpWebResponse] $result = $req.GetResponse()
|
||||
$null = $sp.CloseConnectionGroup($groupName)
|
||||
$outfilename = "Export.cer"
|
||||
[System.Byte[]] $data = $sp.Certificate.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert)
|
||||
[System.IO.File]::WriteAllBytes($outfilename, $data)
|
||||
$null = Import-Certificate -FilePath "Export.cer" -CertStoreLocation Cert:\LocalMachine\Root
|
||||
$null = Import-Certificate -FilePath "Export.cer" -CertStoreLocation Cert:\LocalMachine\CA
|
||||
$null = Import-Certificate -FilePath "Export.cer" -CertStoreLocation Cert:\LocalMachine\My
|
||||
$null = Import-Certificate -FilePath "Export.cer" -CertStoreLocation Cert:\LocalMachine\AuthRoot
|
||||
$null = Import-Certificate -FilePath "Export.cer" -CertStoreLocation Cert:\LocalMachine\TrustedDevices
|
||||
|
||||
Write-BuildLog "Connect to View"
|
||||
Import-Module VMware.VimAutomation.HorizonView
|
||||
$hvServer = Connect-HVServer -server localhost -credential $cred
|
||||
$Global:hvServices = $hvServer.ExtensionData
|
||||
|
||||
Write-BuildLog "Add vCentre to View"
|
||||
$vcService = New-Object VMware.Hv.VirtualCenterService
|
||||
$certService = New-Object VMware.Hv.CertificateService
|
||||
$vcSpecHelper = $vcService.getVirtualCenterSpecHelper()
|
||||
$serverSpec = $vcSpecHelper.getDataObject().serverSpec
|
||||
$serverSpec.serverName = $VCHost
|
||||
$serverSpec.port = 443
|
||||
$serverSpec.useSSL = $true
|
||||
$serverSpec.userName = "administrator"
|
||||
$vcPassword = New-Object VMware.Hv.SecureString
|
||||
$enc = [system.Text.Encoding]::UTF8
|
||||
$vcPassword.Utf8String = $enc.GetBytes($AdminPWD)
|
||||
$serverSpec.password = $vcPassword
|
||||
$serverSpec.serverType = $certService.getServerSpecHelper().SERVER_TYPE_VIRTUAL_CENTER
|
||||
$certData = $certService.Certificate_Validate($hvServices, $serverSpec)
|
||||
$certificateOverride = New-Object VMware.Hv.CertificateThumbprint
|
||||
$certificateOverride.sslCertThumbprint = $certData.thumbprint.sslCertThumbprint
|
||||
$certificateOverride.sslCertThumbprintAlgorithm = $certData.thumbprint.sslCertThumbprintAlgorithm
|
||||
# Adding View Composer was a pain
|
||||
$ViewComposerData = New-Object VMware.Hv.VirtualCenterViewComposerData
|
||||
$ViewComposerData.viewComposerType = "LOCAL_TO_VC"
|
||||
$ViewCompserverspec = New-Object VMware.Hv.ServerSpec
|
||||
$ViewCompserverspec.port = 18443
|
||||
$ViewCompserverspec.serverName = 'vc.lab.local'
|
||||
$ViewCompserverspec.userName = 'administrator'
|
||||
$ViewCompserverspec.password = $vcPassword
|
||||
$ViewCompserverspec.serverType = 'VIEW_COMPOSER'
|
||||
$ViewCompserverspec.useSSL = $True
|
||||
$ViewComposerData.ServerSpec = $ViewCompserverspec
|
||||
$compCertService = New-Object VMware.Hv.CertificateService
|
||||
$compCertData = $compcertService.Certificate_Validate($hvServices, $ViewCompserverspec)
|
||||
$compCertificateOverride = New-Object VMware.Hv.CertificateThumbprint
|
||||
$compCertificateOverride.sslCertThumbprint = $compCertData.thumbprint.sslCertThumbprint
|
||||
$compCertificateOverride.sslCertThumbprintAlgorithm = $compCertData.thumbprint.sslCertThumbprintAlgorithm
|
||||
$ViewComposerData.CertificateOverride = $compCertificateOverride
|
||||
$vcSpecHelper.getDataObject().ViewComposerData = $ViewComposerData
|
||||
$vcSpecHelper.getDataObject().CertificateOverride = $certificateOverride
|
||||
$vcId = $vcService.VirtualCenter_Create($hvServices, $vcSpecHelper.getDataObject())
|
||||
|
||||
Write-BuildLog "Setup View composer domain"
|
||||
$spec = New-Object VMware.Hv.ViewComposerDomainAdministratorSpec
|
||||
$spec.Base = New-Object VMware.Hv.ViewComposerDomainAdministratorBase
|
||||
$spec.Base.Domain = 'lab.local'
|
||||
$spec.Base.UserName = 'vi-admin'
|
||||
$ADPassword = New-Object VMware.Hv.SecureString
|
||||
$ADPassword.Utf8String = $enc.GetBytes("VMware1!")
|
||||
$spec.Base.Password = $ADPassword
|
||||
$spec.VirtualCenter = $global:DefaultVIServer.Id
|
||||
|
||||
#Write-BuildLog "Set Security Server pairing password"
|
||||
#Since the type doesn't appear to be in the Powershell module we cannot add the pairing password
|
||||
#$pairingData = New-Object VMware.Hv.SecurityServerPairingData
|
||||
#$pairingPassword = New-Object VMware.Hv.SecureString
|
||||
#$pairingPassword.Utf8String = $enc.GetBytes("VMware1!")
|
||||
#$pairingData.pairingPassword = $pairingPassword
|
||||
#$pairingData.timeoutMinutes = 1440
|
||||
#$CS1 = ($hvServices.ConnectionServer.ConnectionServer_List())[0]
|
||||
#$CS1.securityServerPairing = $pairingData
|
||||
|
||||
$icausername="vi-admin"
|
||||
$icadomain = "lab.local"
|
||||
$icadminPassword = New-Object VMware.Hv.SecureString
|
||||
$enc = [system.Text.Encoding]::UTF8
|
||||
$icadminPassword.Utf8String = $enc.GetBytes($AdminPWD)
|
||||
$spec=new-object vmware.hv.InstantCloneEngineDomainAdministratorSpec
|
||||
$spec.base=new-object vmware.hv.InstantCloneEngineDomainAdministratorBase
|
||||
$spec.base.domain=(($hvServices.ADDomain.addomain_list() | where {$_.DnsName -eq $icadomain} | select-object -first 1).id)
|
||||
$spec.base.username=$icausername
|
||||
$spec.base.password=$icadminpassword
|
||||
$ICADM = $hvServices.InstantCloneEngineDomainAdministrator.InstantCloneEngineDomainAdministrator_Create($spec)
|
||||
|
||||
Write-BuildLog "Setup View eventlog"
|
||||
$updates = @()
|
||||
$updates += Get-MapEntry -key "database.server" -value "dc.lab.local"
|
||||
$updates += Get-MapEntry -key "database.type" -value "SQLSERVER"
|
||||
$updates += Get-MapEntry -key "database.name" -value "ViewEvents"
|
||||
$updates += Get-MapEntry -key "database.port" -value 1433
|
||||
$updates += Get-MapEntry -key "database.userName" -value "VMview"
|
||||
$updates += Get-MapEntry -key "database.password" -value $ADPassword
|
||||
$updates += Get-MapEntry -key "database.tablePrefix" -value "Lab_"
|
||||
$Events = $hvServices.EventDatabase.EventDatabase_Update($updates)
|
||||
|
||||
Disconnect-HVServer -server localhost -Force -Confirm:$false
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Config /f
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
Write-BuildLog "Emailing log"
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
$mailmessage.To.add($emailto)
|
||||
$Summary = "Completed AutoLab VM build.`r`n"
|
||||
$Summary += "The build of $env:computername has finished, installing VMware Tools and rebooting`r`n"
|
||||
$Summary += "The build log is attached`r`n"
|
||||
$mailmessage.Subject = "$env:computername VM build finished"
|
||||
$mailmessage.Body = $Summary
|
||||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
$mailmessage.dispose()
|
||||
$SMTPClient.dispose()
|
||||
}
|
||||
#read-host "Check VC was added"
|
|
@ -1,10 +1,12 @@
|
|||
@echo off
|
||||
echo *************************
|
||||
echo *
|
||||
echo **
|
||||
echo * Begining Build.cmd as %userdomain%\%username%
|
||||
echo * Begining Build.cmd as %userdomain%\%username% >> c:\buildlog.txt
|
||||
echo * Connect to build share
|
||||
net use B: \\192.168.199.7\Build >> c:\buildlog.txt
|
||||
type b:\automate\version.txt >> c:\buildlog.txt
|
||||
echo * Connect to build share >> c:\buildlog.txt
|
||||
if not exist B:\ net use B: \\192.168.199.7\Build
|
||||
if not exist c:\temp\ md c:\temp
|
||||
regedit -s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
regedit -s B:\Automate\_Common\ExplorerView.reg
|
||||
|
@ -13,7 +15,9 @@ REG ADD "HKCU\Environment" /V SEE_MASK_NOZONECHECKS /T REG_SZ /D 1 /F
|
|||
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /V SEE_MASK_NOZONECHECKS /T REG_SZ /D 1 /F
|
||||
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments " /V SaveZoneInformation /T REG_DWORD /D 1 /F
|
||||
echo * Activate Windows >> c:\buildlog.txt
|
||||
copy B:\automate\_Common\wasp.dll C:\windows\system32
|
||||
cscript //B "%windir%\system32\slmgr.vbs" /ato
|
||||
copy B:\Automate\validate.ps1 C:\
|
||||
copy B:\Automate\PSFunctions.ps1 C:\
|
||||
copy B:\Automate\%computername%\Build.ps1 c:\
|
||||
echo * Starting PowerShell script for Phase 2 completion
|
||||
|
|
|
@ -5,6 +5,13 @@ if (Test-Path C:\PSFunctions.ps1) {
|
|||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
$a = (Get-Host).UI.RawUI
|
||||
$a.WindowTitle = "CS2 Build Automation"
|
||||
$b = $a.WindowSize
|
||||
$b.Height = $a.MaxWindowSize.Height - 1
|
||||
$a.WindowSize = $b
|
||||
Import-Module C:\windows\system32\WASP.dll
|
||||
Select-Window -Title "CS2 Build Automation" | set-windowposition -left 75 -top 3
|
||||
|
||||
if (Test-Path "B:\Automate\automate.ini") {
|
||||
Write-BuildLog "Determining automate.ini settings."
|
||||
|
@ -17,13 +24,29 @@ if (Test-Path "B:\Automate\automate.ini") {
|
|||
$emailto = ((Select-String -SimpleMatch "emailto=" -Path "B:\Automate\automate.ini").line).substring(8)
|
||||
$SmtpServer = ((Select-String -SimpleMatch "SmtpServer=" -Path "B:\Automate\automate.ini").line).substring(11)
|
||||
}
|
||||
If (([System.Environment]::OSVersion.Version.Major -eq 6) -and ([System.Environment]::OSVersion.Version.Minor -ge 2)) {
|
||||
if ((Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain -eq $False) {
|
||||
Write-BuildLog "Joining domain"
|
||||
B:\automate\_Common\Autologon administrator lab $AdminPWD
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f
|
||||
$password = $AdminPWD | ConvertTo-SecureString -asPlainText -Force
|
||||
$credential = New-Object System.Management.Automation.PSCredential("administrator",$password)
|
||||
$null = Add-Computer -DomainName "lab.local" -Credential $credential -restart
|
||||
read-host "Wait for restart"
|
||||
} else {
|
||||
regedit /s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
Write-BuildLog "Change default local administrator password"
|
||||
net user administrator $AdminPWD
|
||||
B:\automate\_Common\Autologon administrator lab $AdminPWD
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
}
|
||||
If ((([System.Environment]::OSVersion.Version.Major *10) + [System.Environment]::OSVersion.Version.Minor) -ge 62) {
|
||||
Write-BuildLog "Disabling autorun of ServerManager at logon."
|
||||
Start-Process schtasks -ArgumentList ' /Change /TN "\Microsoft\Windows\Server Manager\ServerManager" /DISABLE' -Wait -Verb RunAs
|
||||
Write-BuildLog "Disabling screen saver"
|
||||
set-ItemProperty -path 'HKCU:\Control Panel\Desktop' -name ScreenSaveActive -value 0
|
||||
Write-BuildLog "Install admin tools"
|
||||
Add-WindowsFeature RSAT-Feature-Tools,RSAT-DHCP,RSAT-DNS-Server,RSAT-AD-AdminCenter
|
||||
$null = Add-WindowsFeature RSAT-Feature-Tools,RSAT-DHCP,RSAT-DNS-Server,RSAT-AD-AdminCenter
|
||||
Write-BuildLog "Enable remote management through firewall"
|
||||
Netsh firewall set service RemoteAdmin
|
||||
Netsh advfirewall set currentprofile settings remotemanagement enable
|
||||
|
@ -35,42 +58,70 @@ if (Test-Path "C:\VMware-view*") {
|
|||
If ($Files[$i].Name -like "VMware-view*") {$Installer = $Files[$i].FullName}
|
||||
}
|
||||
switch ($viewinstall) {
|
||||
70 {
|
||||
75 {
|
||||
Write-BuildLog "Install View 7.5 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=2 ADAM_PRIMARY_NAME=cs1.lab.local VDM_IP_PROTOCOL_USAG=IPv4 HTMLACCESS=1"' -verb RunAs
|
||||
if ([System.Environment]::OSVersion.Version.Major -ge 9) {
|
||||
C:\Windows\Microsoft.NET\Framework64\v4.0.30319 \InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}else {
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
} 70 {
|
||||
Write-BuildLog "Install View 7.0 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=2 ADAM_PRIMARY_NAME=cs1.lab.local"' -verb RunAs
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
if ([System.Environment]::OSVersion.Version.Major -ge 9) {
|
||||
C:\Windows\Microsoft.NET\Framework64\v4.0.30319 \InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}else {
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
}
|
||||
60 {
|
||||
Write-BuildLog "Install View 6.0 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=2 ADAM_PRIMARY_NAME=cs1.lab.local"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
53{
|
||||
Write-BuildLog "Install View 5.3 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=2 ADAM_PRIMARY_NAME=cs1.lab.local"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
52 {
|
||||
Write-BuildLog "Install View 5.2 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=2 ADAM_PRIMARY_NAME=cs1.lab.local"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
51 {
|
||||
Write-BuildLog "Install View 5.1 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=2 ADAM_PRIMARY_NAME=cs1.lab.local"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
50 {
|
||||
Write-BuildLog "Install View 5.0 Connection Server"
|
||||
Start-Process $Installer -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=2 ADAM_PRIMARY_NAME=cs1.lab.local"'
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll" >> c:\buildLog.txt
|
||||
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files\VMware\VMware View\Server\bin\PowershellServiceCmdlets.dll"
|
||||
}
|
||||
}
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
Write-BuildLog "Emailing log"
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
$mailmessage.To.add($emailto)
|
||||
$Summary = "Completed AutoLab VM build.`r`n"
|
||||
$Summary += "The build of $env:computername has finished, installing VMware Tools and rebooting`r`n"
|
||||
$Summary += "The build log is attached`r`n"
|
||||
$mailmessage.Subject = "$env:computername VM build finished"
|
||||
$mailmessage.Body = $Summary
|
||||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
}
|
||||
Exit
|
||||
}
|
||||
Write-BuildLog "Install Flash Player"
|
||||
Start-Process msiexec -wait -ArgumentList " /i b:\Automate\_Common\install_flash_player_11_active_x.msi /qn"
|
||||
|
||||
browserAndFlash
|
||||
|
||||
Write-BuildLog "Setup Firewall"
|
||||
netsh advfirewall firewall add rule name="All ICMP V4" dir=in action=allow protocol=icmpv4
|
||||
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
|
||||
|
@ -80,32 +131,15 @@ route add 192.168.201.0 mask 255.255.255.0 192.168.199.254 -p
|
|||
Write-BuildLog "Cleanup"
|
||||
regedit /s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
Write-BuildLog "Change default local administrator password"
|
||||
net user administrator $AdminPWD
|
||||
B:\automate\_Common\Autologon administrator CS2 $AdminPWD
|
||||
Write-BuildLog "Copy Connection server install and setup recall"
|
||||
$Files = get-childitem "b:\view$viewinstall"
|
||||
for ($i=0; $i -lt $files.Count; $i++) {
|
||||
If ($Files[$i].Name -like "VMware-viewconnectionserver*") {$Installer = $Files[$i].FullName}
|
||||
}
|
||||
copy $Installer C:\
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f >> c:\buildlog.txt
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f
|
||||
Write-BuildLog "Install VMware Tools"
|
||||
b:\VMTools\Setup64.exe /s /v "/qn"
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
$mailmessage.To.add($emailto)
|
||||
$Summary = "Completed AutoLab VM build.`r`n"
|
||||
$Summary += "The build of $env:computername has finished, installing VMware Tools and rebooting`r`n"
|
||||
$Summary += "The build log is attached`r`n"
|
||||
$mailmessage.Subject = "$env:computername VM build finished"
|
||||
$mailmessage.Body = $Summary
|
||||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
}
|
||||
Read-Host "Reboot?"
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
@echo off
|
||||
echo * Begining Phase2.cmd as %userdomain%\%username%
|
||||
echo * Begining Phase2.cmd as %userdomain%\%username% >> c:\buildlog.txt
|
||||
net use B: \\192.168.199.7\Build
|
||||
ver | find "6.1" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K8
|
||||
|
@ -6,36 +8,21 @@ ver | find "6.2" > nul
|
|||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "6.3" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "10.0" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K16
|
||||
Exit
|
||||
:ver_2K12
|
||||
If Exist C:\Windows\SYSVOL\* Goto ver_2K8
|
||||
echo * Install DHCP and DNS
|
||||
echo * Install DHCP and DNS >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:DHCPServer /quiet
|
||||
Dism /online /enable-feature /featurename:DHCPServer-Tools /all /quiet
|
||||
Dism /online /enable-feature /featurename:DNS-Server-Full-Role /quiet
|
||||
Dism /online /enable-feature /featurename:DNS-Server-Tools /all /quiet
|
||||
echo * Install AD DC Role
|
||||
echo * Install AD DC Role >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:DirectoryServices-DomainController /all /quiet
|
||||
Dism /online /enable-feature /featurename:DirectoryServices-AdministrativeCenter /all /quiet
|
||||
Dism /online /enable-feature /featurename:ActiveDirectory-PowerShell /all /quiet
|
||||
sc config dhcpserver start= auto
|
||||
regedit -s B:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s B:\Automate\_Common\NoSCRNSave.reg
|
||||
regedit -s B:\Automate\_Common\ExplorerView.reg
|
||||
regedit -s b:\Automate\_Common\Nested.reg
|
||||
echo * Promote to DC
|
||||
echo * Promote to DC >> c:\buildlog.txt
|
||||
copy \\192.168.199.7\Build\Automate\DC\dcpromo.ps1 c:\
|
||||
powershell c:\dcpromo.ps1
|
||||
pause
|
||||
:ver_2K8
|
||||
echo * Install services on Windows 2008
|
||||
echo * Install services on Windows 2008 >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:DHCPServerCore >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:DNS-Server-Full-Role >> c:\buildlog.txt
|
||||
sc config dhcpserver start= auto >> c:\buildlog.txt
|
||||
:ver_2K12
|
||||
:ver_2K16
|
||||
echo **
|
||||
echo * Connect to build share
|
||||
echo * Connect to build share >> c:\buildlog.txt
|
||||
net use B: \\192.168.199.7\Build
|
||||
type B:\automate\version.txt >> C:\buildlog.txt
|
||||
net use b: \\192.168.199.7\Build
|
||||
echo **
|
||||
echo * Copy PowerShell files
|
||||
echo * Copy PowerShell files >> c:\buildlog.txt
|
||||
|
@ -53,5 +40,4 @@ cscript //B "%windir%\system32\slmgr.vbs" /ato
|
|||
echo * Starting PowerShell script for Phase 2 completion
|
||||
echo * Starting PowerShell script for Phase 2 completion >> C:\buildlog.txt
|
||||
powershell c:\Phase2.ps1
|
||||
if exist C:\phase2.ps1 del c:\phase2.ps1
|
||||
if exist c:\phase2.cmd del c:\phase2.cmd
|
||||
exit
|
||||
|
|
|
@ -6,6 +6,31 @@ if (Test-Path C:\PSFunctions.ps1) {
|
|||
exit
|
||||
}
|
||||
|
||||
if((get-process "dcpromo" -ea SilentlyContinue) -ne $Null){
|
||||
write-buildlog "DCPromo still in progress, closing"
|
||||
exit
|
||||
}
|
||||
Try {
|
||||
Get-ADDomainController -Discover -ea SilentlyContinue
|
||||
} catch {
|
||||
write-buildlog "Not yet a domain controller, DCPromo"
|
||||
#Install-Windowsfeature AD-Domain-Services,DNS -IncludeManagementTools
|
||||
$null = Add-WindowsFeature -name ad-domain-services -IncludeManagementTools
|
||||
$safemodeadminpwd = ConvertTo-SecureString -String "VMware1!" -asplaintext -force
|
||||
Write-buildlog "Install-ADDSForest"
|
||||
$null = Install-ADDSForest -DomainName "lab.local" -ForestMode Win2008R2 -DomainMode Win2008R2 -SafeModeAdministratorPassword $safemodeadminpwd -Force
|
||||
exit
|
||||
}
|
||||
write-buildlog "Starting Phase2.ps1"
|
||||
|
||||
$a = (Get-Host).UI.RawUI
|
||||
$a.WindowTitle = "DC Build Automation"
|
||||
$b = $a.WindowSize
|
||||
$b.Height = $a.MaxWindowSize.Height - 1
|
||||
$a.WindowSize = $b
|
||||
Import-Module C:\windows\system32\WASP.dll
|
||||
Select-Window -Title "DC Build Automation" | set-windowposition -left 75 -top 3
|
||||
|
||||
# Start DC configuration process
|
||||
if (Test-Path B:\Automate\automate.ini) {
|
||||
$KMSIP = "0.0.0.0"
|
||||
|
@ -45,13 +70,12 @@ if (Test-Path B:\Automate\automate.ini) {
|
|||
|
||||
Write-BuildLog "Installing 7-zip."
|
||||
try {
|
||||
msiexec /qb /i B:\Automate\_Common\7z920-x64.msi
|
||||
msiexec /qb /i B:\Automate\_Common\7z1805-x64.msi
|
||||
Write-BuildLog "Installation of 7-zip completed."
|
||||
}
|
||||
catch {
|
||||
Write-BuildLog "7-zip installation failed."
|
||||
}
|
||||
Write-BuildLog ""
|
||||
if (Test-Path "b:\VMware-PowerCLI.exe") {
|
||||
$PowCLIver = (Get-ChildItem B:\VMware-PowerCLI.exe).VersionInfo.ProductVersion.trim()
|
||||
if ($PowCLIver -eq "5.0.0.3501") {$PowCLIver = "5.0.0-3501"}
|
||||
|
@ -75,7 +99,6 @@ if (Test-Path "C:\Program Files\Tftpd64_SE\Tftpd64_SVC.exe") {
|
|||
Write-BuildLog "Copying B:\Automate\DC\TFTP-Root\ contents to C:\TFTP-Root."
|
||||
xcopy B:\Automate\DC\TFTP-Root\*.* C:\TFTP-Root\ /s /c /y /q
|
||||
Write-BuildLog "Installation of TFTP completed."
|
||||
Write-BuildLog ""
|
||||
}
|
||||
|
||||
Write-BuildLog "Set root password for ESXi builds"
|
||||
|
@ -99,6 +122,54 @@ $TempContent = Get-Content B:\Automate\Hosts\esx12-5.cfg |%{$_ -replace "VMware1
|
|||
$TempContent | Set-Content B:\Automate\Hosts\esx12-5.cfg
|
||||
|
||||
Write-BuildLog "Checking for vSphere files..."
|
||||
if (Test-Path "B:\ESXi67\*") {
|
||||
if ((Test-Path "B:\ESXi67\*.iso") -and !(Test-Path "B:\ESXi67\BOOT.CFG") ){
|
||||
Write-BuildLog "Extracting ESXi 6.7 installer from ISO."
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\ESXi67\ B:\ESXi67\*.iso >> C:\ExtractLog.txt
|
||||
}
|
||||
Write-BuildLog "ESXi 6.7 found; creating C:\TFTP-Root\ESXi67 and copying ESXi 67 boot files."
|
||||
$null = $null = New-Item -Path C:\TFTP-Root\ESXi67 -ItemType Directory -Force -Confirm:$false
|
||||
xcopy B:\ESXi67\*.* C:\TFTP-Root\ESXi67\ /s /c /y /q
|
||||
Get-Content C:\TFTP-Root\ESXi67\BOOT.CFG | %{$_ -replace "/","/ESXi67/"} | Set-Content C:\TFTP-Root\ESXi67\Besx1-67.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi67\Besx1-67.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx1-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi67\BOOT.CFG | %{$_ -replace "/","/ESXi67/"} | Set-Content C:\TFTP-Root\ESXi67\Besx2-67.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi67\Besx2-67.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx2-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi67\BOOT.CFG | %{$_ -replace "/","/ESXi67/"} | Set-Content C:\TFTP-Root\ESXi67\Besx3-67.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi67\Besx3-67.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx3-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi67\BOOT.CFG | %{$_ -replace "/","/ESXi67/"} | Set-Content C:\TFTP-Root\ESXi67\Besx4-67.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi67\Besx4-67.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx4-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi67\BOOT.CFG | %{$_ -replace "/","/ESXi67/"} | Set-Content C:\TFTP-Root\ESXi67\BOOTM.CFG
|
||||
powershell C:\PXEMenuConfig.ps1 ESXi67
|
||||
Write-BuildLog "ESXi 6.7 added to TFTP and PXE menu."
|
||||
$esxi67 = $true
|
||||
} else {
|
||||
$esxi67 = $false
|
||||
}
|
||||
|
||||
if (Test-Path "B:\ESXi65\*") {
|
||||
if ((Test-Path "B:\ESXi65\*.iso") -and !(Test-Path "B:\ESXi65\BOOT.CFG") ){
|
||||
Write-BuildLog "Extracting ESXi 6.5 installer from ISO."
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\ESXi65\ B:\ESXi65\*.iso >> C:\ExtractLog.txt
|
||||
}
|
||||
Write-BuildLog "ESXi 6.5 found; creating C:\TFTP-Root\ESXi65 and copying ESXi 65 boot files."
|
||||
$null = $null = New-Item -Path C:\TFTP-Root\ESXi65 -ItemType Directory -Force -Confirm:$false
|
||||
xcopy B:\ESXi65\*.* C:\TFTP-Root\ESXi65\ /s /c /y /q
|
||||
Get-Content C:\TFTP-Root\ESXi65\BOOT.CFG | %{$_ -replace "/","/ESXi65/"} | Set-Content C:\TFTP-Root\ESXi65\Besx1-65.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi65\Besx1-65.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx1-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi65\BOOT.CFG | %{$_ -replace "/","/ESXi65/"} | Set-Content C:\TFTP-Root\ESXi65\Besx2-65.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi65\Besx2-65.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx2-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi65\BOOT.CFG | %{$_ -replace "/","/ESXi65/"} | Set-Content C:\TFTP-Root\ESXi65\Besx3-65.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi65\Besx3-65.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx3-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi65\BOOT.CFG | %{$_ -replace "/","/ESXi65/"} | Set-Content C:\TFTP-Root\ESXi65\Besx4-65.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi65\Besx4-65.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx4-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi65\BOOT.CFG | %{$_ -replace "/","/ESXi65/"} | Set-Content C:\TFTP-Root\ESXi65\BOOTM.CFG
|
||||
powershell C:\PXEMenuConfig.ps1 ESXi65
|
||||
Write-BuildLog "ESXi 6.5 added to TFTP and PXE menu."
|
||||
$esxi65 = $true
|
||||
} else {
|
||||
$esxi65 = $false
|
||||
}
|
||||
|
||||
if (Test-Path "B:\ESXi60\*") {
|
||||
if ((Test-Path "B:\ESXi60\*.iso") -and !(Test-Path "B:\ESXi60\BOOT.CFG") ){
|
||||
Write-BuildLog "Extracting ESXi 6.0 installer from ISO."
|
||||
|
@ -115,10 +186,9 @@ if (Test-Path "B:\ESXi60\*") {
|
|||
Add-Content C:\TFTP-Root\ESXi60\Besx3-60.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx3-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi60\BOOT.CFG | %{$_ -replace "/","/ESXi60/"} | Set-Content C:\TFTP-Root\ESXi60\Besx4-60.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi60\\Besx4-60.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx4-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi60\BOOT.CFG | %{$_ -replace "/","/ESXi60/"} | Set-Content C:\TFTP-Root\ESXi60\BOOT.CFG
|
||||
Get-Content C:\TFTP-Root\ESXi60\BOOT.CFG | %{$_ -replace "/","/ESXi60/"} | Set-Content C:\TFTP-Root\ESXi60\BOOTM.CFG
|
||||
powershell C:\PXEMenuConfig.ps1 ESXi60
|
||||
Write-BuildLog "ESXi 6.0 added to TFTP and PXE menu."
|
||||
Write-BuildLog ""
|
||||
$esxi60 = $true
|
||||
} else {
|
||||
$esxi60 = $false
|
||||
|
@ -140,10 +210,9 @@ if (Test-Path "B:\ESXi55\*") {
|
|||
Add-Content C:\TFTP-Root\ESXi55\Besx3-55.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx3-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi55\BOOT.CFG | %{$_ -replace "/","/ESXi55/"} | Set-Content C:\TFTP-Root\ESXi55\Besx4-55.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi55\\Besx4-55.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx4-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi55\BOOT.CFG | %{$_ -replace "/","/ESXi55/"} | Set-Content C:\TFTP-Root\ESXi55\BOOT.CFG
|
||||
Get-Content C:\TFTP-Root\ESXi55\BOOT.CFG | %{$_ -replace "/","/ESXi55/"} | Set-Content C:\TFTP-Root\ESXi55\BOOTM.CFG
|
||||
powershell C:\PXEMenuConfig.ps1 ESXi55
|
||||
Write-BuildLog "ESXi 5.5 added to TFTP and PXE menu."
|
||||
Write-BuildLog ""
|
||||
$esxi55 = $true
|
||||
} else {
|
||||
$esxi55 = $false
|
||||
|
@ -165,10 +234,9 @@ if (Test-Path "B:\ESXi51\*") {
|
|||
Add-Content C:\TFTP-Root\ESXi51\Besx3-5.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx3-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi51\BOOT.CFG | %{$_ -replace "/","/ESXi51/"} | Set-Content C:\TFTP-Root\ESXi51\Besx4-5.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi51\Besx4-5.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx4-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi51\BOOT.CFG | %{$_ -replace "/","/ESXi51/"} | Set-Content C:\TFTP-Root\ESXi51\BOOT.CFG
|
||||
Get-Content C:\TFTP-Root\ESXi51\BOOT.CFG | %{$_ -replace "/","/ESXi51/"} | Set-Content C:\TFTP-Root\ESXi51\BOOTM.CFG
|
||||
powershell C:\PXEMenuConfig.ps1 ESXi51
|
||||
Write-BuildLog "ESXi 5.1 added to TFTP and PXE menu."
|
||||
Write-BuildLog ""
|
||||
$esxi51 = $true
|
||||
} else {
|
||||
$esxi51 = $false
|
||||
|
@ -190,10 +258,9 @@ if (Test-Path "B:\ESXi50\*") {
|
|||
Add-Content C:\TFTP-Root\ESXi50\Besx3-5.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx3-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi50\BOOT.CFG | %{$_ -replace "/","/ESXi50/"} | Set-Content C:\TFTP-Root\ESXi50\Besx4-5.cfg
|
||||
Add-Content C:\TFTP-Root\ESXi50\Besx4-5.cfg "kernelopt=ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx4-5.cfg"
|
||||
Get-Content C:\TFTP-Root\ESXi50\BOOT.CFG | %{$_ -replace "/","/ESXi50/"} | Set-Content C:\TFTP-Root\ESXi50\BOOT.CFG
|
||||
Get-Content C:\TFTP-Root\ESXi50\BOOT.CFG | %{$_ -replace "/","/ESXi50/"} | Set-Content C:\TFTP-Root\ESXi50\BOOTM.CFG
|
||||
powershell C:\PXEMenuConfig.ps1 ESXi50
|
||||
Write-BuildLog "ESXi 5.0 added to TFTP and PXE menu."
|
||||
Write-BuildLog ""
|
||||
$esxi50 = $true
|
||||
} else {
|
||||
$esxi50 = $false
|
||||
|
@ -215,7 +282,6 @@ if (Test-Path "B:\ESXi41\*") {
|
|||
xcopy B:\ESXi41\mboot.c32 C:\TFTP-Root\ESXi41 /s /c /y /q
|
||||
powershell C:\PXEMenuConfig.ps1 ESXi41
|
||||
Write-BuildLog "ESXi 4.1 added to TFTP and PXE menu."
|
||||
Write-BuildLog ""
|
||||
$esxi41 = $true
|
||||
} else {
|
||||
$esxi41 = $false
|
||||
|
@ -232,13 +298,12 @@ if (Test-Path "B:\ESX41\*") {
|
|||
xcopy B:\ESX41\isolinux\initrd.img C:\TFTP-Root\ESX41 /s /c /y /q
|
||||
powershell C:\PXEMenuConfig.ps1 ESX41
|
||||
Write-BuildLog "ESX 4.1 added to TFTP and PXE menu."
|
||||
Write-BuildLog ""
|
||||
$esx41 = $true
|
||||
} else {
|
||||
$esx41 = $false
|
||||
}
|
||||
|
||||
if (!($esx41 -or $esxi41 -or $esxi50 -or $esxi51 -or $esxi55 -or $esxi60)) {
|
||||
if (!($esx41 -or $esxi41 -or $esxi50 -or $esxi51 -or $esxi55 -or $esxi60 -or $esxi65 -or $esxi67)) {
|
||||
Write-BuildLog "No ESX or ESXi files found."
|
||||
Write-BuildLog "Is the NAS VM running? If so, make sure the Build share is available and populated."
|
||||
Write-BuildLog "Restart this machine when Build share is available; build will proceed after restart."
|
||||
|
@ -254,16 +319,39 @@ if (Test-Path "B:\gParted\*") {
|
|||
LABEL gParted
|
||||
MENU LABEL gParted utility
|
||||
kernel gparted/vmlinuz
|
||||
append initrd=gparted/initrd.img boot=live config components union=overlay username=user noswap noeject ip= vga=788 fetch=tftp://192.168.199.4/gparted/filesystem.squashfs
|
||||
append initrd=gparted/initrd.img boot=live config components union=overlay username=user noswap noeject ip= vga=788 fetch=tftp://\\dc.lab.local/gparted/filesystem.squashfs
|
||||
"@
|
||||
}
|
||||
|
||||
Write-BuildLog "Checking for vCenter files..."
|
||||
if (Test-Path "B:\VIM_67\*") {
|
||||
if ((Test-Path "B:\VIM_67\*.iso") -and !(Test-Path "B:\VIM_67\autorun.exe")){
|
||||
Write-BuildLog "Extracting vCenter 6.7 installer from ISO."
|
||||
start-process "C:\Program Files\7-Zip\7z.exe" -ArgumentList " x -r -y -aoa -oB:\VIM_67\ B:\VIM_67\*.iso" -RedirectStandardOutput C:\ExtractLog.txt -wait
|
||||
remove-item "B:\VIM_67\*.iso"
|
||||
}
|
||||
Write-BuildLog "vCenter 6.7 found."
|
||||
$vCenter67 = $true
|
||||
} else {
|
||||
$vCenter67 = $false
|
||||
}
|
||||
if (Test-Path "B:\VIM_65\*") {
|
||||
if ((Test-Path "B:\VIM_65\*.iso") -and !(Test-Path "B:\VIM_65\autorun.exe")){
|
||||
Write-BuildLog "Extracting vCenter 6.5 installer from ISO."
|
||||
start-process "C:\Program Files\7-Zip\7z.exe" -ArgumentList " x -r -y -aoa -oB:\VIM_65\ B:\VIM_65\*.iso" -RedirectStandardOutput C:\ExtractLog.txt -wait
|
||||
remove-item "B:\VIM_65\*.iso"
|
||||
}
|
||||
Write-BuildLog "vCenter 6.5 found."
|
||||
$vCenter65 = $true
|
||||
} else {
|
||||
$vCenter65 = $false
|
||||
}
|
||||
if (Test-Path "B:\VIM_60\*") {
|
||||
if ((Test-Path "B:\VIM_60\*.iso") -and !(Test-Path "B:\VIM_60\autorun.exe")){
|
||||
Write-BuildLog "Extracting vCenter 6.0 installer from ISO."
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\VIM_60\ B:\VIM_60\*.iso >> C:\ExtractLog.txt
|
||||
}
|
||||
start-process "C:\Program Files\7-Zip\7z.exe" -ArgumentList " x -r -y -aoa -oB:\VIM_60\ B:\VIM_60\*.iso" -RedirectStandardOutput C:\ExtractLog.txt -wait
|
||||
remove-item "B:\VIM_60\*.iso"
|
||||
}
|
||||
Write-BuildLog "vCenter 6.0 found."
|
||||
$vCenter60 = $true
|
||||
} else {
|
||||
|
@ -272,7 +360,8 @@ if (Test-Path "B:\VIM_60\*") {
|
|||
if (Test-Path "B:\VIM_55\*") {
|
||||
if ((Test-Path "B:\VIM_55\*.iso") -and !(Test-Path "B:\VIM_55\autorun.exe")){
|
||||
Write-BuildLog "Extracting vCenter 5.5 installer from ISO."
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\VIM_55\ B:\VIM_55\*.iso >> C:\ExtractLog.txt
|
||||
start-process "C:\Program Files\7-Zip\7z.exe" -ArgumentList " x -r -y -aoa -oB:\VIM_55\ B:\VIM_55\*.iso" -RedirectStandardOutput C:\ExtractLog.txt -wait
|
||||
remove-item "B:\VIM_55\*.iso"
|
||||
}
|
||||
Write-BuildLog "vCenter 5.5 found."
|
||||
$vCenter55 = $true
|
||||
|
@ -282,7 +371,8 @@ if (Test-Path "B:\VIM_55\*") {
|
|||
if (Test-Path "B:\VIM_51\*") {
|
||||
if ((Test-Path "B:\VIM_51\*.iso") -and !(Test-Path "B:\VIM_51\autorun.exe")) {
|
||||
Write-BuildLog "Extracting vCenter 5.1 installer from ISO."
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\VIM_51\ B:\VIM_51\*.iso >> C:\ExtractLog.txt
|
||||
start-process "C:\Program Files\7-Zip\7z.exe" -ArgumentList " x -r -y -aoa -oB:\VIM_51\ B:\VIM_51\*.iso" -RedirectStandardOutput C:\ExtractLog.txt -wait
|
||||
remove-item "B:\VIM_51\*.iso"
|
||||
}
|
||||
Write-BuildLog "vCenter 5.1 found."
|
||||
$vCenter51 = $true
|
||||
|
@ -293,7 +383,8 @@ if (Test-Path "B:\VIM_51\*") {
|
|||
if (Test-Path "B:\VIM_50\*") {
|
||||
if ((Test-Path "B:\VIM_50\*.iso") -and !(Test-Path "B:\VIM_50\autorun.exe")) {
|
||||
Write-BuildLog "Extracting vCenter 5.0 installer from ISO."
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\VIM_50\ B:\VIM_50\*.iso >> C:\ExtractLog.txt
|
||||
start-process "C:\Program Files\7-Zip\7z.exe" -ArgumentList " x -r -y -aoa -oB:\VIM_50\ B:\VIM_50\*.iso" -RedirectStandardOutput C:\ExtractLog.txt -wait
|
||||
remove-item "B:\VIM_50\*.iso"
|
||||
}
|
||||
Write-BuildLog "vCenter 5.0 found."
|
||||
$vCenter50 = $true
|
||||
|
@ -312,61 +403,66 @@ if (Test-Path "B:\VIM_41\*") {
|
|||
$vCenter41 = $false
|
||||
}
|
||||
|
||||
if (!($vCenter41 -or $vCenter50 -or $vCenter51 -or $vCenter55 -or $vCenter60)) {
|
||||
if (!($vCenter41 -or $vCenter50 -or $vCenter51 -or $vCenter55 -or $vCenter60 -or $vCenter65 -or $vCenter67)) {
|
||||
Write-BuildLog "No vCenter installation files found on Build share."
|
||||
Write-BuildLog "Is the NAS VM running? If so, make sure the Build share is available and populated."
|
||||
Write-BuildLog "Restart this machine when Build share is available; build will proceed after restart."
|
||||
exit
|
||||
}
|
||||
|
||||
if (!($vCenter67 -and $esxi67)) {
|
||||
Write-BuildLog "vSphere 6.7 installation requirements not met."
|
||||
$vSphere67 = $false
|
||||
} else {
|
||||
$vSphere67 = $true
|
||||
}
|
||||
if (!($vCenter65 -and $esxi65)) {
|
||||
Write-BuildLog "vSphere 6.5 installation requirements not met."
|
||||
$vSphere65 = $false
|
||||
} else {
|
||||
$vSphere65 = $true
|
||||
}
|
||||
if (!($vCenter60 -and $esxi60)) {
|
||||
Write-BuildLog "vSphere 6.0 installation requirements not met. Please verify that both vCenter 6.0 & ESXi 6.0 exist on Build share."
|
||||
Write-BuildLog "vSphere 6.0 installation requirements not met."
|
||||
$vSphere60 = $false
|
||||
} else {
|
||||
$vSphere60 = $true
|
||||
}
|
||||
if (!($vCenter55 -and $esxi55)) {
|
||||
Write-BuildLog "vSphere 5.5 installation requirements not met. Please verify that both vCenter 5.5 & ESXi 5.5 exist on Build share."
|
||||
Write-BuildLog "vSphere 5.5 installation requirements not met."
|
||||
$vSphere55 = $false
|
||||
} else {
|
||||
$vSphere55 = $true
|
||||
}
|
||||
if (!($vCenter51 -and $esxi51)) {
|
||||
Write-BuildLog "vSphere 5.1 installation requirements not met. Please verify that both vCenter 5.1 & ESXi 5.1 exist on Build share."
|
||||
Write-BuildLog "vSphere 5.1 installation requirements not met."
|
||||
$vSphere51 = $false
|
||||
} else {
|
||||
$vSphere51 = $true
|
||||
}
|
||||
if (!($vCenter50 -and $esxi50)) {
|
||||
Write-BuildLog "vSphere 5.0 installation requirements not met. Please verify that both vCenter 5.0 & ESXi 5.0 exist on Build share."
|
||||
Write-BuildLog "vSphere 5.0 installation requirements not met."
|
||||
$vSphere50 = $false
|
||||
} else {
|
||||
$vSphere50 = $true
|
||||
}
|
||||
if (!($vCenter41 -and ($esxi41 -or $esx41))) {
|
||||
Write-BuildLog "vSphere 4.1 installation requirements not met. Please verify that both vCenter 4.1 & ESXi 4.1 exist on Build share."
|
||||
Write-BuildLog "vSphere 4.1 installation requirements not met."
|
||||
$vSphere41 = $false
|
||||
} else {
|
||||
$vSphere41 = $true
|
||||
}
|
||||
|
||||
if (!($vSphere41 -or $vSphere50 -or $vSphere51 -or $vSphere55 -or $vSphere60)) {
|
||||
if (!($vSphere41 -or $vSphere50 -or $vSphere51 -or $vSphere55 -or $vSphere60 -or $vSphere65 -or $vSphere67)) {
|
||||
Write-BuildLog "Matching vCenter & ESXi distributions not found. Please check the Build share."
|
||||
}
|
||||
|
||||
Write-BuildLog ""
|
||||
Write-BuildLog "Authorise and configure DHCP"
|
||||
netsh dhcp server 192.168.199.4 set dnscredentials administrator lab.local $AdminPWD
|
||||
netsh dhcp add server dc.lab.local 192.168.199.4 >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 add scope 192.168.199.0 255.255.255.0 "Lab scope" "Scope for lab.local" >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 scope 192.168.199.0 add iprange 192.168.199.100 192.168.199.199 >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 scope 192.168.199.0 set optionvalue 003 IPADDRESS 192.168.199.2 >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 scope 192.168.199.0 set optionvalue 005 IPADDRESS 192.168.199.4 >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 scope 192.168.199.0 set optionvalue 006 IPADDRESS 192.168.199.4 >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 scope 192.168.199.0 set optionvalue 015 STRING lab.local >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 scope 192.168.199.0 set optionvalue 066 STRING 192.168.199.4 >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 scope 192.168.199.0 set optionvalue 067 STRING pxelinux.0 >> C:\DNS.log
|
||||
netsh dhcp server 192.168.199.4 scope 192.168.199.0 set state 1 >> C:\DNS.log
|
||||
$PCLIver = deployPowerCLI
|
||||
|
||||
Write-BuildLog "Install, Authorise and configure DHCP"
|
||||
If ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62) {
|
||||
$null = Add-WindowsFeature -IncludeManagementTools dhcp
|
||||
}
|
||||
Write-BuildLog "Create DNS Records"
|
||||
dnscmd localhost /config /UpdateOptions 0x0 >> C:\DNS.log
|
||||
dnscmd localhost /config lab.local /allowupdate 1 >> C:\DNS.log
|
||||
|
@ -413,16 +509,46 @@ If (($KMSIP.Split("."))[0] -ne "0") {
|
|||
Write-BuildLog "Setting DNS record for external KMS server IP address to $KMSIP according to automate.ini."
|
||||
dnscmd DC /RecordAdd lab.local _vlmcs._tcp SRV 0 10 1688 $KMSIP >> C:\DNS.log
|
||||
}
|
||||
|
||||
Write-BuildLog ""
|
||||
Write-BuildLog "Setup DHCP scope"
|
||||
netsh dhcp server \\dc.lab.local set dnscredentials administrator lab.local $AdminPWD
|
||||
netsh dhcp add server dc.lab.local 192.168.199.4 >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local add scope 192.168.199.0 255.255.255.0 "Lab scope" "Scope for lab.local" >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local scope 192.168.199.0 add iprange 192.168.199.100 192.168.199.199 >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local scope 192.168.199.0 set optionvalue 003 IPADDRESS 192.168.199.2 >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local scope 192.168.199.0 set optionvalue 005 IPADDRESS \\dc.lab.local >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local scope 192.168.199.0 set optionvalue 006 IPADDRESS \\dc.lab.local >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local scope 192.168.199.0 set optionvalue 015 STRING lab.local >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local scope 192.168.199.0 set optionvalue 066 STRING \\dc.lab.local >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local scope 192.168.199.0 set optionvalue 067 STRING pxelinux.0 >> C:\DNS.log
|
||||
netsh dhcp server \\dc.lab.local scope 192.168.199.0 set state 1 >> C:\DNS.log
|
||||
Write-BuildLog "Checking available SQL Express versions."
|
||||
$null = New-Item -Path C:\temp -ItemType Directory -Force -Confirm:$false
|
||||
if (Test-Path "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe") {
|
||||
Write-BuildLog "SQL Server Install found, not installing"
|
||||
}Else {
|
||||
if (Test-Path "B:\VIM_60\redist\SQLEXPR\SQLEXPR_x64_ENU.exe") {
|
||||
if ((Test-Path "B:\VIM_67\redist\SQLEXPR\SQLEXPR_x64_ENU.exe") -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
$vc67SQL = $true
|
||||
Write-BuildLog "SQL Server 2012 Express SP2 for vCenter 6.7 found; installing."
|
||||
copy B:\VIM_67\redist\SQLEXPR\SQLEXPR_x64_ENU.exe C:\temp
|
||||
$Arguments = '/IACCEPTSQLSERVERLICENSETERMS /action=Install /FEATURES=SQL,Tools /SQLSYSADMINACCOUNTS="Lab\Domain Admins" /SQLSVCACCOUNT="Lab\vi-admin" /SQLSVCPASSWORD="' + $AdminPWD + '" /AGTSVCACCOUNT="Lab\vi-admin" /AGTSVCPASSWORD="' + $AdminPWD + '" /ADDCURRENTUSERASSQLADMIN /SECURITYMODE=SQL /SAPWD="VMware1!" /INSTANCENAME=SQLExpress /BROWSERSVCSTARTUPTYPE="Automatic" /TCPENABLED=1 /NPENABLED=1 /SQLSVCSTARTUPTYPE=Automatic /q'
|
||||
Start-Process C:\temp\SQLEXPR_x64_ENU.exe -ArgumentList $Arguments -Wait
|
||||
del c:\TEMP\SQLEXPR_x64_ENU.EXE
|
||||
Write-BuildLog "Creating Databases."
|
||||
Start-Process "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe" -ArgumentList "-S dc\SQLEXPRESS -i B:\Automate\DC\MakeDB.txt" -RedirectStandardOutput c:\sqllog.txt -Wait
|
||||
regedit -s B:\Automate\DC\SQLTCP.reg
|
||||
} elseif ((Test-Path "B:\VIM_65\redist\SQLEXPR\SQLEXPR_x64_ENU.exe") -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
$vc65SQL = $true
|
||||
Write-BuildLog "SQL Server 2012 Express SP2 for vCenter 6.5 found; installing."
|
||||
copy B:\VIM_65\redist\SQLEXPR\SQLEXPR_x64_ENU.exe C:\temp
|
||||
$Arguments = '/IACCEPTSQLSERVERLICENSETERMS /action=Install /FEATURES=SQL,Tools /SQLSYSADMINACCOUNTS="Lab\Domain Admins" /SQLSVCACCOUNT="Lab\vi-admin" /SQLSVCPASSWORD="' + $AdminPWD + '" /AGTSVCACCOUNT="Lab\vi-admin" /AGTSVCPASSWORD="' + $AdminPWD + '" /ADDCURRENTUSERASSQLADMIN /SECURITYMODE=SQL /SAPWD="VMware1!" /INSTANCENAME=SQLExpress /BROWSERSVCSTARTUPTYPE="Automatic" /TCPENABLED=1 /NPENABLED=1 /SQLSVCSTARTUPTYPE=Automatic /q'
|
||||
Start-Process C:\temp\SQLEXPR_x64_ENU.exe -ArgumentList $Arguments -Wait
|
||||
del c:\TEMP\SQLEXPR_x64_ENU.EXE
|
||||
Write-BuildLog "Creating Databases."
|
||||
Start-Process "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe" -ArgumentList "-S dc\SQLEXPRESS -i B:\Automate\DC\MakeDB.txt" -RedirectStandardOutput c:\sqllog.txt -Wait
|
||||
regedit -s B:\Automate\DC\SQLTCP.reg
|
||||
} elseif ((Test-Path "B:\VIM_60\redist\SQLEXPR\SQLEXPR_x64_ENU.exe") -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
$vc6SQL = $true
|
||||
Write-BuildLog "SQL Server 2012 Express SP1 for vCenter 6.0 found; installing."
|
||||
Write-BuildLog "SQL Server 2012 Express SP2 for vCenter 6.0 found; installing."
|
||||
copy B:\VIM_60\redist\SQLEXPR\SQLEXPR_x64_ENU.exe C:\temp
|
||||
$Arguments = '/IACCEPTSQLSERVERLICENSETERMS /action=Install /FEATURES=SQL,Tools /SQLSYSADMINACCOUNTS="Lab\Domain Admins" /SQLSVCACCOUNT="Lab\vi-admin" /SQLSVCPASSWORD="' + $AdminPWD + '" /AGTSVCACCOUNT="Lab\vi-admin" /AGTSVCPASSWORD="' + $AdminPWD + '" /ADDCURRENTUSERASSQLADMIN /SECURITYMODE=SQL /SAPWD="VMware1!" /INSTANCENAME=SQLExpress /BROWSERSVCSTARTUPTYPE="Automatic" /TCPENABLED=1 /NPENABLED=1 /SQLSVCSTARTUPTYPE=Automatic /q'
|
||||
Start-Process C:\temp\SQLEXPR_x64_ENU.exe -ArgumentList $Arguments -Wait
|
||||
|
@ -467,10 +593,12 @@ if (Test-Path "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe")
|
|||
Start-Process "C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe" -ArgumentList "-S dc\SQLEXPRESS -i B:\Automate\DC\MakeDB41.txt" -RedirectStandardOutput c:\sqllog.txt -Wait; type C:\sqllog.txt | add-content C:\buildlog.txt
|
||||
regedit -s B:\Automate\DC\SQLTCP.reg
|
||||
} else {
|
||||
$vc67SQL = $false
|
||||
$vc65SQL = $false
|
||||
$vc6SQL = $false
|
||||
$vc5SQL = $false
|
||||
$vc4SQL = $false
|
||||
Write-BuildLog "No SQL Express installers found. Please verify that all contents of vCenter ISO are copied into the correct folder on the Build share."
|
||||
Write-BuildLog "No compatible SQL Express installers found. Please verify that all contents of vCenter ISO are copied into the correct folder on the Build share."
|
||||
Read-Host "Press <ENTER> to exit"
|
||||
exit
|
||||
}
|
||||
|
@ -481,7 +609,7 @@ if (Test-Path B:\sqlmsssetup.exe) {
|
|||
If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -le 61)) {
|
||||
Write-BuildLog "Doing Windows Server 2008 specific build actions"
|
||||
if (Test-Path B:\SQLManagementStudio_x64_ENU.exe) {
|
||||
if ( (!(Get-ChildItem B:\SQLManagementStudio_x64_ENU.exe).VersionInfo.ProductVersion -like "10.50.2500*") -and ($vc6SQL -or $vc5SQL -or $vc4SQL)) {
|
||||
if ( (!(Get-ChildItem B:\SQLManagementStudio_x64_ENU.exe).VersionInfo.ProductVersion -like "10.50.2500*") -and ($vc67SQL -or$vc65SQL -or $vc6SQL -or $vc5SQL -or $vc4SQL)) {
|
||||
Write-BuildLog "The version of SQL Management Studio on the Build share is incompatible with SQL Server 2008 Express R2 SP1. Please see ReadMe.html on the Build share."
|
||||
} else {
|
||||
Write-BuildLog "SQL Management Studio found; installing."
|
||||
|
@ -498,13 +626,13 @@ If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]:
|
|||
}
|
||||
}
|
||||
If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
Write-BuildLog "Doing Windows Server 2012 specific build actions"
|
||||
Write-BuildLog "Doing Windows Server 2012 and 2016 specific build actions"
|
||||
Write-BuildLog "Disabling autorun of ServerManager at logon."
|
||||
Start-Process schtasks -ArgumentList ' /Change /TN "\Microsoft\Windows\Server Manager\ServerManager" /DISABLE' -Wait -Verb RunAs
|
||||
Write-BuildLog "Disabling screen saver"
|
||||
set-ItemProperty -path 'HKCU:\Control Panel\Desktop' -name ScreenSaveActive -value 0
|
||||
Write-BuildLog "Installing Administration tools."
|
||||
Install-WindowsFeature –Name RSAT-DHCP,RSAT-DNS-Server,Net-Framework-Core
|
||||
Write-BuildLog "Installing.Net Framework 3.5"
|
||||
$null = Install-WindowsFeature Net-Framework-Core -source D:\Sources\sxs
|
||||
if (Test-Path B:\SQLManagementStudio_x64_ENU.exe) {
|
||||
if ( (!(Get-ChildItem B:\SQLManagementStudio_x64_ENU.exe).VersionInfo.ProductVersion -like "10.50.2500*") -and ($vc6SQL -or $vc5SQL -or $vc4SQL)) {
|
||||
Write-BuildLog "The version of SQL Management Studio on the Build share is incompatible with SQL Server 2008 Express R2 SP1. Please see ReadMe.html on the Build share."
|
||||
|
@ -513,7 +641,7 @@ If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]:
|
|||
Start-Process B:\SQLManagementStudio_x64_ENU.exe -ArgumentList "/ACTION=INSTALL /IACCEPTSQLSERVERLICENSETERMS /FEATURES=Tools /q" -Wait -Verb RunAs
|
||||
}
|
||||
} else { Write-BuildLog "SQL Management Studio not found (optional)."}
|
||||
Write-BuildLog "Setup IIS on Windows 2012"
|
||||
Write-BuildLog "Setup IIS on Windows 2012 or 2016"
|
||||
import-module servermanager
|
||||
If (Test-Path "D:\Sources\sxs\*") {$null = add-windowsfeature web-server -includeallsubfeature -source D:\Sources\sxs}
|
||||
If (Test-Path "E:\Sources\sxs\*") {$null = add-windowsfeature web-server -includeallsubfeature -source E:\Sources\sxs}
|
||||
|
@ -521,7 +649,7 @@ If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]:
|
|||
New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
|
||||
Write-BuildLog "Setup Certificate Authority & web enrollment."
|
||||
Import-Module ServerManager
|
||||
Add-WindowsFeature AD-Certificate, Adcs-Cert-Authority, Adcs-Enroll-Web-Pol, Adcs-Enroll-Web-Svc, Adcs-Web-Enrollment , Adcs-Device-Enrollment , Adcs-Online-Cert -IncludeManagementTools
|
||||
$null = Add-WindowsFeature AD-Certificate, Adcs-Cert-Authority, Adcs-Enroll-Web-Pol, Adcs-Enroll-Web-Svc, Adcs-Web-Enrollment , Adcs-Device-Enrollment , Adcs-Online-Cert -IncludeManagementTools
|
||||
copy B:\Automate\DC\setupca.vbs C:\temp
|
||||
Cscript C:\temp\setupca.vbs /is /iw /sn LabCA /sk 4096 /sp "RSA#Microsoft Software Key Storage Provider" /sa SHA256 >> c:\SetupCA.log
|
||||
import-module webadministration
|
||||
|
@ -543,6 +671,8 @@ Write-BuildLog "Cleanup and creating Desktop shortcuts."
|
|||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
wscript B:\Automate\DC\Shortcuts.vbs
|
||||
|
||||
browserAndFlash
|
||||
|
||||
if (Test-Path B:\Automate\automate.ini) {
|
||||
$timezone = ((Select-String -SimpleMatch "TZ=" -Path "B:\Automate\automate.ini").line).substring(3)
|
||||
Write-BuildLog "Setting time zone to $timezone according to automate.ini."
|
||||
|
@ -562,6 +692,16 @@ if (Test-Path -Path "B:\VMTools\setup*") {
|
|||
cd c:\temp
|
||||
$vcinstall = ((Select-String -SimpleMatch "VCInstall=" -Path "B:\Automate\automate.ini").line).substring(10)
|
||||
switch ($vcinstall) {
|
||||
67 {
|
||||
B:\Automate\_Common\wget.exe -nd http://packages.vmware.com/tools/esx/6.0/windows/VMware-tools-windows-9.10.0-2476743.iso --no-check-certificate -awget.log
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\VMtools\ c:\temp\VMware-tools-windows-9.10.0-2476743.iso >> C:\ExtractLog.txt
|
||||
Write-BuildLog "VMware Tools V6.0 Downloaded and extracted to build share."
|
||||
}
|
||||
65 {
|
||||
B:\Automate\_Common\wget.exe -nd http://packages.vmware.com/tools/esx/6.0/windows/VMware-tools-windows-9.10.0-2476743.iso --no-check-certificate -awget.log
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\VMtools\ c:\temp\VMware-tools-windows-9.10.0-2476743.iso >> C:\ExtractLog.txt
|
||||
Write-BuildLog "VMware Tools V6.0 Downloaded and extracted to build share."
|
||||
}
|
||||
60 {
|
||||
B:\Automate\_Common\wget.exe -nd http://packages.vmware.com/tools/esx/6.0/windows/VMware-tools-windows-9.10.0-2476743.iso --no-check-certificate -awget.log
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oB:\VMtools\ c:\temp\VMware-tools-windows-9.10.0-2476743.iso >> C:\ExtractLog.txt
|
||||
|
@ -582,15 +722,15 @@ if (Test-Path -Path "B:\VMTools\setup*") {
|
|||
}
|
||||
}
|
||||
if (Test-Path -Path "B:\VMTools\setup*") {
|
||||
Write-BuildLog "VMware Tools found."
|
||||
$vmtools = $true
|
||||
}
|
||||
Write-BuildLog ""
|
||||
Write-BuildLog "VMware Tools found."
|
||||
$vmtools = $true
|
||||
}
|
||||
}
|
||||
if (($vmtools) -and (-Not (Test-Path "C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe"))) {
|
||||
Write-BuildLog "Installing VMware tools, build complete after reboot."
|
||||
Write-BuildLog "(Re)build vCenter next."
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
Write-BuildLog "Emailing log"
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
|
@ -603,6 +743,8 @@ if (($vmtools) -and (-Not (Test-Path "C:\Program Files\VMware\VMware Tools\VMwar
|
|||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
$mailmessage.dispose()
|
||||
$SMTPClient.dispose()
|
||||
}
|
||||
Start-Process B:\VMTools\setup64.exe -ArgumentList '/s /v "/qn"' -verb RunAs -Wait
|
||||
Start-Sleep -Seconds 300
|
||||
|
|
|
@ -7,7 +7,7 @@ LABEL Main Menu
|
|||
|
||||
label esx50
|
||||
KERNEL /esxi50/mboot.c32
|
||||
APPEND -c /esxi50/boot.cfg
|
||||
APPEND -c /esxi50/bootm.cfg
|
||||
MENU LABEL ESXi 5.0 Manual Install
|
||||
|
||||
label esx1-5
|
||||
|
|
|
@ -7,7 +7,7 @@ LABEL Main Menu
|
|||
|
||||
label esx51
|
||||
KERNEL /esxi51/mboot.c32
|
||||
APPEND -c /esxi51/boot.cfg
|
||||
APPEND -c /esxi51/bootm.cfg
|
||||
MENU LABEL ESXi 5.1 Manual Install
|
||||
|
||||
label ESX1-5
|
||||
|
|
|
@ -7,7 +7,7 @@ LABEL Main Menu
|
|||
|
||||
label esx51
|
||||
KERNEL /esxi55/mboot.c32
|
||||
APPEND -c /esxi55/boot.cfg
|
||||
APPEND -c /esxi55/bootm.cfg
|
||||
MENU LABEL ESXi 5.5 Manual Install
|
||||
|
||||
label ESX1-5
|
||||
|
|
|
@ -7,7 +7,7 @@ LABEL Main Menu
|
|||
|
||||
label esx51
|
||||
KERNEL /esxi60/mboot.c32
|
||||
APPEND -c /esxi60/boot.cfg
|
||||
APPEND -c /esxi60/bootm.cfg
|
||||
MENU LABEL ESXi 6.0 Manual Install
|
||||
|
||||
label ESX1-5
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
MENU TITLE ESXi 6.5 installs
|
||||
|
||||
LABEL Main Menu
|
||||
MENU LABEL ^Return to Main Menu
|
||||
KERNEL pxelinux.cfg/menu.c32
|
||||
APPEND pxelinux.cfg/default
|
||||
|
||||
label esx51
|
||||
KERNEL /esxi65/mboot.c32
|
||||
APPEND -c /esxi65/bootm.cfg
|
||||
MENU LABEL ESXi 6.5 Manual Install
|
||||
|
||||
label ESX1-5
|
||||
KERNEL /esxi65/mboot.c32
|
||||
APPEND -c /esxi65/Besx1-65.cfg
|
||||
MENU LABEL Host1 Automated Install
|
||||
|
||||
Label ESX2-5
|
||||
KERNEL /esxi65/mboot.c32
|
||||
APPEND -c /esxi65/Besx2-65.cfg
|
||||
MENU LABEL Host2 Automated Install
|
||||
|
||||
Label ESX3-5
|
||||
KERNEL /esxi65/mboot.c32
|
||||
APPEND -c /esxi65/Besx3-65.cfg
|
||||
MENU LABEL Host3 Automated Install
|
||||
|
||||
Label ESX4-5
|
||||
KERNEL /esxi65/mboot.c32
|
||||
APPEND -c /esxi65/Besx4-65.cfg
|
||||
MENU LABEL Host4 Automated Install
|
|
@ -0,0 +1,31 @@
|
|||
MENU TITLE ESXi 6.7 installs
|
||||
|
||||
LABEL Main Menu
|
||||
MENU LABEL ^Return to Main Menu
|
||||
KERNEL pxelinux.cfg/menu.c32
|
||||
APPEND pxelinux.cfg/default
|
||||
|
||||
label esx51
|
||||
KERNEL /esxi67/mboot.c32
|
||||
APPEND -c /esxi67/bootm.cfg
|
||||
MENU LABEL ESXi 6.7 Manual Install
|
||||
|
||||
label ESX1-5
|
||||
KERNEL /esxi67/mboot.c32
|
||||
APPEND -c /esxi67/Besx1-67.cfg
|
||||
MENU LABEL Host1 Automated Install
|
||||
|
||||
Label ESX2-5
|
||||
KERNEL /esxi67/mboot.c32
|
||||
APPEND -c /esxi67/Besx2-67.cfg
|
||||
MENU LABEL Host2 Automated Install
|
||||
|
||||
Label ESX3-5
|
||||
KERNEL /esxi67/mboot.c32
|
||||
APPEND -c /esxi67/Besx3-67.cfg
|
||||
MENU LABEL Host3 Automated Install
|
||||
|
||||
Label ESX4-5
|
||||
KERNEL /esxi67/mboot.c32
|
||||
APPEND -c /esxi67/Besx4-67.cfg
|
||||
MENU LABEL Host4 Automated Install
|
|
@ -1,22 +1,86 @@
|
|||
# Functions used in AutoLab PowerShell scripts
|
||||
#
|
||||
#
|
||||
# Version 2.6
|
||||
# Version 3.0
|
||||
#
|
||||
|
||||
# This Function from the PowerCLI Blog
|
||||
# http://blogs.vmware.com/vipowershell/2009/08/how-to-list-datastores-that-are-on-shared-storage.html
|
||||
#
|
||||
function browserAndFlash {
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62) {
|
||||
Write-BuildLog "Install Firefox browser"
|
||||
start-process "B:\automate\_common\Firefox Setup 59.0.3.exe" -ArgumentList " -ms" -Wait -Verb RunAs
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
Write-BuildLog "Installing Adobe Flash Player."
|
||||
Start-Process msiexec -ArgumentList '/i b:\Automate\_Common\install_flash_player_29_plugin.msi /qb' -Wait
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
}
|
||||
}
|
||||
|
||||
Function deployPowerCLI {
|
||||
Write-BuildLog "Installing PowerCLI"
|
||||
$PCLIver = 0
|
||||
if ((Test-Path "b:\VMware-PowerCLI-6.7.*.exe") -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
Write-BuildLog "VMware PowerCLI 6.7 installer found; installing."
|
||||
$PCLIver = 67
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-6.7.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif ((Test-Path "b:\VMware-PowerCLI-6.5.*.exe") -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
Write-BuildLog "VMware PowerCLI 6.5 installer found; installing."
|
||||
$PCLIver = 65
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-6.5.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif ((Test-Path "b:\VMware-PowerCLI-6.3.*.exe") -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
Write-BuildLog "VMware PowerCLI 6.3 installer found; installing."
|
||||
$PCLIver = 63
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-6.3.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif ((Test-Path "b:\VMware-PowerCLI-6.0.*.exe") -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
Write-BuildLog "VMware PowerCLI 6.0 installer found; installing."
|
||||
$PCLIver = 60
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-6.0.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.8.*.exe") {
|
||||
Write-BuildLog "VMware PowerCLI 5.8 installer found; installing."
|
||||
$PCLIver = 58
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.8.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.5.*.exe") {
|
||||
Write-BuildLog "VMware PowerCLI 5.5 installer found; installing."
|
||||
$PCLIver = 55
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.5.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.0.*.exe"){
|
||||
Write-BuildLog "VMware PowerCLI 5.0 installer found; installing."
|
||||
$PCLIver = 50
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.0.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} else {
|
||||
If ((Read-Host "Would you like to go to the PowerCLI download site (y/n)?") -like "y") {
|
||||
$IE=new-object -com internetexplorer.application
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62) {$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI670R1")}
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -lt 62) {$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI58R1")}
|
||||
$IE.visible=$true
|
||||
} Else {
|
||||
Write-Host "OK, but the build will not work correctly without PowerCLI"
|
||||
}
|
||||
}
|
||||
Write-BuildLog "Add PowerCLI $PCLIver initialization to PowerShell environment"
|
||||
$null = New-Item -ItemType directory -Path "C:\Users\administrator\Documents\WindowsPowerShell\"
|
||||
$null = New-Item -ItemType directory -Path "C:\Users\Default\Documents\WindowsPowerShell\"
|
||||
$null = Copy-Item "B:\automate\_common\profile.ps1" -Destination "C:\Users\administrator\Documents\WindowsPowerShell\"
|
||||
$null = Copy-Item "B:\automate\_common\profile.ps1" -Destination "C:\Users\Default\Documents\WindowsPowerShell"
|
||||
return $PCLIver
|
||||
}
|
||||
|
||||
function Write-BuildLog {
|
||||
param([string]$message)
|
||||
if (!(Test-Path C:\Buildlog.txt)) {
|
||||
New-Item -Path C:\Buildlog.txt -ItemType File
|
||||
}
|
||||
Write-Host $message
|
||||
$message | Out-File C:\BuildLog.txt -Encoding Default -append
|
||||
$out = (get-date -f HH:mm:ss) + " " + $message
|
||||
Write-Host $out
|
||||
$out | Out-File C:\BuildLog.txt -Encoding Default -append
|
||||
}
|
||||
|
||||
# This Function from the PowerCLI Blog
|
||||
# http://blogs.vmware.com/vipowershell/2009/08/how-to-list-datastores-that-are-on-shared-storage.html
|
||||
#
|
||||
function Get-ShareableDatastore {
|
||||
# Get all datastores.
|
||||
$datastores = Get-Datastore
|
||||
|
@ -82,7 +146,7 @@ Function Check-File ($a, $b) {
|
|||
if (test-Path $a) {
|
||||
Write-Host ($b + " found.") -foregroundcolor "green"
|
||||
} else {
|
||||
Write-Host ($b + " missing.") -foregroundcolor "red"
|
||||
Write-Host ("**** " + $b + " missing.") -foregroundcolor "red"
|
||||
$Global:Pass = $False
|
||||
}
|
||||
}
|
||||
|
@ -91,7 +155,7 @@ Function Check-OptionalFile ($a, $b) {
|
|||
if (test-Path $a) {
|
||||
Write-Host ($b + " found.") -foregroundcolor "green"
|
||||
} else {
|
||||
Write-Host ($b + " missing.") -foregroundcolor "Yellow"
|
||||
Write-Host ("**** " + $b + " missing.") -foregroundcolor "Yellow"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -100,7 +164,7 @@ Function Check-ServiceRunning ($a) {
|
|||
if ($SVC.Status -eq "Running") {
|
||||
Write-Host ("Service " + $a + " running.") -foregroundcolor "green"
|
||||
} else {
|
||||
Write-Host ("Service " + $a + " not running.") -foregroundcolor "red"
|
||||
Write-Host ("**** Service " + $a + " not running.") -foregroundcolor "red"
|
||||
$Global:Pass = $False
|
||||
}
|
||||
}
|
||||
|
@ -111,7 +175,7 @@ Function Check-DNSRecord ($a) {
|
|||
$FWDIP = [System.Net.Dns]::GetHostAddresses($a)
|
||||
$ErrorActionPreference = "continue"
|
||||
if ($FWDIP -eq "") {
|
||||
Write-Host ("No DNS for " + $a ) -foregroundcolor "red"
|
||||
Write-Host ("**** No DNS for " + $a ) -foregroundcolor "red"
|
||||
$Global:Pass = $False
|
||||
} else {
|
||||
Write-Host ("DNS OK for " + $a) -foregroundcolor "green"
|
||||
|
|
|
@ -22,9 +22,37 @@ param($version)
|
|||
. "C:\PSFunctions.ps1"
|
||||
|
||||
switch ($version) {
|
||||
ESXi67 {
|
||||
if ((Test-Path "C:\TFTP-Root\ESXi67\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 6.7"))) {
|
||||
Write-BuildLog "Adding ESXi 6.7 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
|
||||
|
||||
LABEL ESXi 67
|
||||
MENU LABEL ESXi 6.7 automated builds
|
||||
KERNEL pxelinux.cfg/menu.c32
|
||||
APPEND pxelinux.cfg/ESXi67.menu
|
||||
"@
|
||||
} else {
|
||||
Write-BuildLog "ESXi 6.7 already in PXE Menu"
|
||||
}
|
||||
}
|
||||
ESXi65 {
|
||||
if ((Test-Path "C:\TFTP-Root\ESXi65\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 6.5"))) {
|
||||
Write-BuildLog "Adding ESXi 6.5 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
|
||||
|
||||
LABEL ESXi 65
|
||||
MENU LABEL ESXi 6.5 automated builds
|
||||
KERNEL pxelinux.cfg/menu.c32
|
||||
APPEND pxelinux.cfg/ESXi65.menu
|
||||
"@
|
||||
} else {
|
||||
Write-BuildLog "ESXi 6.5 already in PXE Menu"
|
||||
}
|
||||
}
|
||||
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"
|
||||
Write-BuildLog "Adding ESXi 6.0 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
|
||||
|
||||
LABEL ESXi 60
|
||||
|
@ -33,12 +61,12 @@ LABEL ESXi 60
|
|||
APPEND pxelinux.cfg/ESXi60.menu
|
||||
"@
|
||||
} else {
|
||||
Write-BuildLog "ESXi 5.5 already in PXE Menu"
|
||||
Write-BuildLog "ESXi 6.0 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"
|
||||
Write-BuildLog "Adding ESXi 5.5 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
|
||||
|
||||
LABEL ESXi 5.5
|
||||
|
@ -52,7 +80,7 @@ LABEL ESXi 5.5
|
|||
}
|
||||
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"
|
||||
Write-BuildLog "Adding ESXi 5.1 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
|
||||
|
||||
LABEL ESXi 5.1
|
||||
|
@ -66,7 +94,7 @@ LABEL ESXi 5.1
|
|||
}
|
||||
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"
|
||||
Write-BuildLog "Adding ESXi 5.0 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
|
||||
|
||||
LABEL ESXi 5.0
|
||||
|
@ -78,7 +106,7 @@ LABEL ESXi 5.0
|
|||
}
|
||||
ESXi41 {
|
||||
if (Test-Path "C:\TFTP-Root\ESXi41\*") {
|
||||
Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 4.1 option to PXE menu"
|
||||
Write-BuildLog "Adding ESXi 4.1 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
|
||||
|
||||
LABEL ESXi 4.1
|
||||
|
@ -102,7 +130,7 @@ label esxi2-4
|
|||
}
|
||||
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"
|
||||
Write-BuildLog "Adding ESX 4.1 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\ESXi41.menu" -Value @"
|
||||
|
||||
label esx2-4
|
||||
|
@ -114,7 +142,7 @@ label esx2-4
|
|||
}
|
||||
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"
|
||||
Write-BuildLog "Adding vCloud option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
|
||||
|
||||
LABEL vCloud
|
||||
|
@ -126,7 +154,7 @@ LABEL vCloud
|
|||
}
|
||||
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"
|
||||
Write-BuildLog "Adding vCloud 5.1 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" -Value @"
|
||||
|
||||
label vCloud51
|
||||
|
@ -143,7 +171,7 @@ label vCloud51
|
|||
}
|
||||
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"
|
||||
Write-BuildLog "Adding vCloud 1.5 option to PXE menu"
|
||||
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" -Value @"
|
||||
|
||||
label vCloud15
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
@echo off
|
||||
echo *************************
|
||||
echo *
|
||||
echo **
|
||||
echo * Begining Build.cmd as %userdomain%\%username%
|
||||
echo * Begining Build.cmd as %userdomain%\%username% >> c:\buildlog.txt
|
||||
echo * Connect to build share
|
||||
net use B: \\192.168.199.7\Build >> c:\buildlog.txt
|
||||
type b:\automate\version.txt >> c:\buildlog.txt
|
||||
echo * Connect to build share >> c:\buildlog.txt
|
||||
if not exist B:\ net use B: \\192.168.199.7\Build
|
||||
if not exist c:\temp\ md c:\temp
|
||||
regedit -s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
regedit -s B:\Automate\_Common\ExplorerView.reg
|
||||
|
@ -12,9 +14,11 @@ regedit -s b:\Automate\_Common\IExplorer.reg
|
|||
REG ADD "HKCU\Environment" /V SEE_MASK_NOZONECHECKS /T REG_SZ /D 1 /F
|
||||
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /V SEE_MASK_NOZONECHECKS /T REG_SZ /D 1 /F
|
||||
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments " /V SaveZoneInformation /T REG_SZ /D 1 /F
|
||||
copy B:\automate\_Common\wasp.dll C:\windows\system32
|
||||
echo * Activate Windows >> c:\buildlog.txt
|
||||
cscript //B "%windir%\system32\slmgr.vbs" /ato
|
||||
copy B:\Automate\PSFunctions.ps1 C:\
|
||||
copy B:\Automate\validate.ps1 C:\
|
||||
copy B:\Automate\%computername%\Build.ps1 c:\
|
||||
echo * Starting PowerShell script for Phase 2 completion
|
||||
echo * Starting PowerShell script for Phase 2 completion >> C:\buildlog.txt
|
||||
|
|
|
@ -5,6 +5,13 @@ if (Test-Path C:\PSFunctions.ps1) {
|
|||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
$a = (Get-Host).UI.RawUI
|
||||
$a.WindowTitle = "SS Build Automation"
|
||||
$b = $a.WindowSize
|
||||
$b.Height = $a.MaxWindowSize.Height - 1
|
||||
$a.WindowSize = $b
|
||||
Import-Module C:\windows\system32\WASP.dll
|
||||
Select-Window -Title "SS Build Automation" | set-windowposition -left 75 -top 3
|
||||
|
||||
if (Test-Path "B:\Automate\automate.ini") {
|
||||
Write-BuildLog "Determining automate.ini settings."
|
||||
|
@ -17,6 +24,26 @@ if (Test-Path "B:\Automate\automate.ini") {
|
|||
$emailto = ((Select-String -SimpleMatch "emailto=" -Path "B:\Automate\automate.ini").line).substring(8)
|
||||
$SmtpServer = ((Select-String -SimpleMatch "SmtpServer=" -Path "B:\Automate\automate.ini").line).substring(11)
|
||||
}
|
||||
if ((Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain -eq $False) {
|
||||
Write-BuildLog "Joining domain"
|
||||
B:\automate\_Common\Autologon administrator lab $AdminPWD
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f
|
||||
$password = $AdminPWD | ConvertTo-SecureString -asPlainText -Force
|
||||
$credential = New-Object System.Management.Automation.PSCredential("administrator",$password)
|
||||
$null = Add-Computer -DomainName "lab.local" -Credential $credential -restart
|
||||
read-host "Wait for restart"
|
||||
} else {
|
||||
regedit /s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
Write-BuildLog "Change default local administrator password"
|
||||
net user administrator $AdminPWD
|
||||
B:\automate\_Common\Autologon administrator lab $AdminPWD
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
Write-BuildLog "Setup Firewall"
|
||||
netsh advfirewall firewall add rule name="All ICMP V4" dir=in action=allow protocol=icmpv4
|
||||
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
|
||||
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
|
||||
}
|
||||
If (([System.Environment]::OSVersion.Version.Major -eq 6) -and ([System.Environment]::OSVersion.Version.Minor -ge 2)) {
|
||||
Write-BuildLog "Disabling autorun of ServerManager at logon."
|
||||
Start-Process schtasks -ArgumentList ' /Change /TN "\Microsoft\Windows\Server Manager\ServerManager" /DISABLE' -Wait -Verb RunAs
|
||||
|
@ -38,51 +65,43 @@ Switch ($ViewInstall) {
|
|||
Write-BuildLog "Install View 5.0 Security Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=3 VDM_SERVER_NAME=cs1.lab.local VDM_SERVER_SS_EXTURL=SS.external.com VDM_SERVER_SS_PWD=VMware1! VDM_SERVER_SS_PCOIP_IPADDR=192.168.20.199 VDM_SERVER_SS_PCOIP_TCPPORT=4172 VDM_SERVER_SS_PCOIP_UDPPORT=4172"'
|
||||
}
|
||||
51 {
|
||||
} 51 {
|
||||
Write-BuildLog "Install View 5.1 Security Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=3 VDM_SERVER_NAME=cs1.lab.local VDM_SERVER_SS_EXTURL=SS.external.com VDM_SERVER_SS_PWD=VMware1! VDM_SERVER_SS_PCOIP_IPADDR=192.168.20.199 VDM_SERVER_SS_PCOIP_TCPPORT=4172 VDM_SERVER_SS_PCOIP_UDPPORT=4172"'
|
||||
}
|
||||
52 {
|
||||
} 52 {
|
||||
Write-BuildLog "Install View 5.2 Security Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=3 VDM_SERVER_NAME=cs1.lab.local VDM_SERVER_SS_EXTURL=SS.external.com VDM_SERVER_SS_PWD=VMware1! VDM_SERVER_SS_PCOIP_IPADDR=192.168.20.199 VDM_SERVER_SS_PCOIP_TCPPORT=4172 VDM_SERVER_SS_PCOIP_UDPPORT=4172"'
|
||||
}
|
||||
53 {
|
||||
} 53 {
|
||||
Write-BuildLog "Install View 5.3 Security Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=3 VDM_SERVER_NAME=cs1.lab.local VDM_SERVER_SS_EXTURL=SS.external.com VDM_SERVER_SS_PWD=VMware1! VDM_SERVER_SS_PCOIP_IPADDR=192.168.20.199 VDM_SERVER_SS_PCOIP_TCPPORT=4172 VDM_SERVER_SS_PCOIP_UDPPORT=4172"'
|
||||
}
|
||||
60 {
|
||||
} 60 {
|
||||
Write-BuildLog "Install View 6.0 Security Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=3 VDM_SERVER_NAME=cs1.lab.local VDM_SERVER_SS_EXTURL=https://SS.lab.local:443 VDM_SERVER_SS_PWD=VMware1! VDM_SERVER_SS_PCOIP_IPADDR=192.168.199.35 VDM_SERVER_SS_PCOIP_TCPPORT=4172 VDM_SERVER_SS_PCOIP_UDPPORT=4172"'
|
||||
}
|
||||
70 {
|
||||
} 70 {
|
||||
Write-BuildLog "Install View 7.0 Security Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=3 VDM_SERVER_NAME=cs1.lab.local VDM_SERVER_SS_EXTURL=https://SS.lab.local:443 VDM_SERVER_SS_PWD=VMware1! VDM_SERVER_SS_PCOIP_IPADDR=192.168.199.35 VDM_SERVER_SS_PCOIP_TCPPORT=4172 VDM_SERVER_SS_PCOIP_UDPPORT=4172"' -verb RunAs
|
||||
} 75 {
|
||||
Write-BuildLog "Install View 7.5 Security Server"
|
||||
copy $Installer C:\ViewInstaller.exe
|
||||
Start-Process C:\ViewInstaller.exe -wait -ArgumentList '/s /v"/qn VDM_SERVER_INSTANCE_TYPE=3 VDM_SERVER_NAME=cs1.lab.local VDM_SERVER_SS_EXTURL=https://SS.lab.local:443 VDM_SERVER_SS_PWD=VMware1! VDM_SERVER_SS_PCOIP_IPADDR=192.168.199.35 VDM_SERVER_SS_PCOIP_TCPPORT=4172 VDM_SERVER_SS_PCOIP_UDPPORT=4172 VDM_IP_PROTOCOL_USAG=IPv4"' -verb RunAs
|
||||
}
|
||||
}
|
||||
Write-BuildLog "Install Flash Player"
|
||||
Start-Process msiexec -wait -ArgumentList " /i b:\Automate\_Common\install_flash_player_11_active_x.msi /qn"
|
||||
Write-BuildLog "Setup Firewall"
|
||||
netsh advfirewall firewall add rule name="All ICMP V4" dir=in action=allow protocol=icmpv4
|
||||
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
|
||||
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
|
||||
Write-BuildLog "Setup persistet route to other subnet for SRM and View"
|
||||
route add 192.168.201.0 mask 255.255.255.0 192.168.199.254 -p
|
||||
|
||||
browserAndFlash
|
||||
|
||||
Write-BuildLog "Cleanup"
|
||||
regedit /s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
Write-BuildLog "Change default local administrator password"
|
||||
net user administrator $AdminPWD
|
||||
B:\automate\_Common\Autologon vi-admin lab $AdminPWD
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
Write-BuildLog "Install VMware Tools"
|
||||
b:\VMTools\Setup64.exe /s /v "/qn"
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
Write-BuildLog "Emailing log"
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
|
@ -95,5 +114,7 @@ if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none"))
|
|||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
$mailmessage.dispose()
|
||||
$SMTPClient.dispose()
|
||||
}
|
||||
Read-Host "Rebooting after VMTools Install"
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,12 +1,12 @@
|
|||
@echo off
|
||||
echo *************************
|
||||
echo *
|
||||
echo **
|
||||
echo * Begining Build.cmd as %userdomain%\%username%
|
||||
echo * Begining Build.cmd as %userdomain%\%username% >> c:\buildlog.txt
|
||||
echo * Connect to build share
|
||||
echo * Connect to build share >> c:\buildlog.txt
|
||||
net use B: \\192.168.199.7\Build >> c:\buildlog.txt
|
||||
md c:\temp
|
||||
type b:\automate\version.txt >> c:\buildlog.txt
|
||||
if not exist B:\ net use B: \\192.168.199.7\Build
|
||||
if not exist c:\temp\ md c:\temp
|
||||
regedit -s b:\Automate\_Common\ExecuPol.reg
|
||||
regedit -s b:\Automate\_Common\NoSCRNSave.reg
|
||||
regedit -s B:\Automate\_Common\ExplorerView.reg
|
||||
|
@ -17,10 +17,9 @@ copy B:\Automate\validate.ps1 C:\
|
|||
copy B:\Automate\PSFunctions.ps1 C:\
|
||||
copy B:\Automate\VC\Build.ps1 c:\
|
||||
copy B:\Automate\VC\Derek-SSL.ps1 c:\
|
||||
copy B:\automate\_Common\wasp.dll C:\windows\system32
|
||||
echo * Activate Windows >> c:\buildlog.txt
|
||||
cscript //B "%windir%\system32\slmgr.vbs" /ato
|
||||
echo * Starting PowerShell script for Build
|
||||
echo * Starting PowerShell script for Build >> C:\buildlog.txt
|
||||
powershell c:\Build.ps1
|
||||
if exist C:\Build.ps1 del c:\Build.ps1
|
||||
if exist C:\Build.cmd del c:\Build.cmd
|
|
@ -5,6 +5,14 @@ if (Test-Path C:\PSFunctions.ps1) {
|
|||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
write-buildlog "Starting Build.ps1"
|
||||
$a = (Get-Host).UI.RawUI
|
||||
$a.WindowTitle = "VC Build Automation"
|
||||
$b = $a.WindowSize
|
||||
$b.Height = $a.MaxWindowSize.Height - 1
|
||||
$a.WindowSize = $b
|
||||
Import-Module C:\windows\system32\WASP.dll
|
||||
Select-Window -Title "VC Build Automation" | set-windowposition -left 75 -top 3
|
||||
|
||||
# Start VC configuration process
|
||||
if (Test-Path "B:\Automate\automate.ini") {
|
||||
|
@ -99,97 +107,129 @@ if (Test-Path "B:\Automate\automate.ini") {
|
|||
} else {
|
||||
Write-BuidLog "Unable to find B:\Automate\automate.ini. Where did it go?"
|
||||
}
|
||||
if ((Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain -eq $False) {
|
||||
Write-BuildLog "Joining domain"
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f
|
||||
$password = $AdminPWD | ConvertTo-SecureString -asPlainText -Force
|
||||
$credential = New-Object System.Management.Automation.PSCredential("administrator",$password)
|
||||
$null = Add-Computer -DomainName "lab.local" -Credential $credential -restart
|
||||
read-host "Waiting for restart"
|
||||
} else {
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
}
|
||||
|
||||
Write-BuildLog "Clear System eventlog, errors to here are spurious"
|
||||
Clear-EventLog -LogName System -confirm:$False
|
||||
|
||||
If ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62) {
|
||||
Write-BuildLog "Disabling autorun of ServerManager at logon."
|
||||
Start-Process schtasks -ArgumentList ' /Change /TN "\Microsoft\Windows\Server Manager\ServerManager" /DISABLE' -Wait -Verb RunAs
|
||||
Write-BuildLog "Disabling screen saver"
|
||||
set-ItemProperty -path 'HKCU:\Control Panel\Desktop' -name ScreenSaveActive -value 0
|
||||
}
|
||||
if (Test-Path "C:\VMware-viewcomposer*") {
|
||||
$Files = get-childitem "C:\"
|
||||
for ($i=0; $i -lt $files.Count; $i++) {
|
||||
If ($Files[$i].Name -like "VMware-viewcomposer*") {$Installer = $Files[$i].FullName}
|
||||
}
|
||||
switch ($viewinstall) {
|
||||
70 {
|
||||
Write-BuildLog "Installing VMware View 7.0 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
} 60 {
|
||||
Write-BuildLog "Installing VMware View 6.0 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
} 53 {
|
||||
Write-BuildLog "Installing VMware View 5.3 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
} 52 {
|
||||
Write-BuildLog "Installing VMware View 5.2 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
}
|
||||
}
|
||||
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f
|
||||
Exit
|
||||
}
|
||||
|
||||
Write-BuildLog "Clear System eventlog, erors to here are spurious"
|
||||
Clear-EventLog -LogName System -confirm:$False
|
||||
|
||||
Write-BuildLog "Installing 7-zip."
|
||||
try {
|
||||
Start-Process msiexec -ArgumentList '/qb /i B:\Automate\_Common\7z920-x64.msi' -Wait
|
||||
}
|
||||
catch {
|
||||
Write-BuildLog "7-zip installation failed."
|
||||
}
|
||||
Start-Process msiexec -ArgumentList '/qb /i B:\Automate\_Common\7z1805-x64.msi' -Wait
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
|
||||
Write-BuildLog "Installing PuTTy."
|
||||
$null = New-Item -Path "C:\Program Files (x86)\PuTTY" -ItemType Directory -Force
|
||||
xcopy B:\Automate\vc\PuTTY\*.* "C:\Program Files (x86)\PuTTY" /s /c /y /q
|
||||
regedit -s B:\Automate\vc\PuTTY.reg
|
||||
If (!((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
try {
|
||||
Write-BuildLog "Installing Adobe Flash Player."
|
||||
Start-Process msiexec -ArgumentList '/i b:\Automate\_Common\install_flash_player_17_active_x.msi /qb' -Wait
|
||||
}
|
||||
catch {
|
||||
Write-BuildLog "Adobe Flash Player installation failed."
|
||||
}
|
||||
}
|
||||
Write-BuildLog ""
|
||||
|
||||
#Install now running as local administrator, don't need to allow vi-admin access
|
||||
#$Acl = Get-Acl "C:\Buildlog.txt"
|
||||
#$Ar = New-Object system.security.accesscontrol.filesystemaccessrule("lab\vi-admin","FullControl","Allow")
|
||||
#$Acl.SetAccessRule($Ar)
|
||||
#Set-Acl "C:\Buildlog.txt" $Acl
|
||||
browserAndFlash
|
||||
|
||||
Write-BuildLog "Change default local administrator password"
|
||||
net user administrator $AdminPWD
|
||||
B:\automate\_Common\Autologon administrator vc $AdminPWD
|
||||
|
||||
Write-BuildLog ""
|
||||
if (Test-Path "b:\VMware-PowerCLI*.exe") {
|
||||
#Start-Process b:\VMware-PowerCLI.exe -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
$null = New-Item -Path "C:\Users\vi-admin\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1" -ItemType File -Force
|
||||
$null = Add-Content -Path "C:\Users\vi-admin\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1" -Value @"
|
||||
if ((Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq `$null) {
|
||||
try {
|
||||
Write-Host "Loading PowerCLI plugin, this may take a little while." -foregroundcolor "cyan"
|
||||
Add-PSSnapin VMware.VimAutomation.Core
|
||||
`$PCLIVer = Get-PowerCLIVersion
|
||||
if (((`$PCLIVer.Major * 10 ) + `$PCLIVer.Minor) -ge 51) {
|
||||
`$null = Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -confirm:`$false -Scope "Session"
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Host "Unable to load the PowerCLI plugin. Please verify installation or install VMware PowerCLI and run this script again."
|
||||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
}
|
||||
"@
|
||||
} else {
|
||||
Write-BuildLog "VMware PowerCLI installer not found. This will need to be installing before running any AutoLab PowerShell post-install scripts."
|
||||
}
|
||||
|
||||
switch ($vcinstall) {
|
||||
67 {
|
||||
Write-BuildLog "Starting vCenter 6.7 automation."
|
||||
If ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -eq 63) {
|
||||
Write-BuildLog "Installing universal C Runtime for windows 2016"
|
||||
B:
|
||||
cd B:\VIM_67\
|
||||
b:\automate\_common\wget.exe -q --no-check-certificate https://download.microsoft.com/download/D/1/3/D13E3150-3BB2-4B22-9D8A-47EE2D609FFF/Windows8.1-KB2999226-x64.msu
|
||||
Start-Process wusa.exe -ArgumentList "B:\VIM_67\Windows8.1-KB2999226-x64.msu /quiet" -Wait -Verb RunAs
|
||||
} ElseIf ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -eq 62) {
|
||||
Write-BuildLog "Installing universal C Runtime for windows 2012"
|
||||
B:
|
||||
cd B:\VIM_67\
|
||||
b:\automate\_common\wget.exe -q --no-check-certificate https://download.microsoft.com/download/9/3/E/93E0745A-EAE9-4B5A-B50C-012F2D3B6659/Windows8-RT-KB2999226-x64.msu
|
||||
Start-Process wusa.exe -ArgumentList "B:\VIM_67\Windows8-RT-KB2999226-x64.msu /quiet" -Wait -Verb RunAs
|
||||
} ElseIf ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -eq 61) {
|
||||
Write-BuildLog "Installing universal C Runtime for windows 2008"
|
||||
B:
|
||||
cd B:\VIM_67\
|
||||
b:\automate\_common\wget.exe -q --no-check-certificate https://download.microsoft.com/download/F/1/3/F13BEC9A-8FC6-4489-9D6A-F84BDC9496FE/Windows6.1-KB2999226-x64.msu
|
||||
Start-Process wusa.exe -ArgumentList "B:\VIM_67\Windows6.1-KB2999226-x64.msu /quiet" -Wait -Verb RunAs
|
||||
}
|
||||
if (Test-Path "b:\VIM_67\redist\SQLEXPR\SQLEXPR_x64_ENU.exe") {
|
||||
Write-BuildLog "SQL Server 2012 Express SP1 for vCenter 6.7 found; installing."
|
||||
Start-Process b:\VIM_67\redist\SQLEXPR\SQLEXPR_x64_ENU.exe -ArgumentList '/q /x:c:\temp /quiet' -Wait -Verb RunAs
|
||||
if (Test-Path "C:\temp\pcusource\1033_enu_lp\x64\setup\x64\sqlncli.msi") {
|
||||
copy C:\temp\pcusource\1033_enu_lp\x64\setup\x64\sqlncli.msi c:\temp
|
||||
} elseif (Test-Path "C:\temp\1033_enu_lp\x64\setup\x64\sqlncli.msi") {
|
||||
copy C:\temp\1033_enu_lp\x64\setup\x64\sqlncli.msi c:\temp
|
||||
}
|
||||
if (Test-Path "C:\temp\sqlncli.msi") {
|
||||
Write-BuildLog "Installing SQL native client."
|
||||
Start-Process msiexec -ArgumentList '/i C:\temp\sqlncli.msi ADDLOCAL=ALL IACCEPTSQLNCLILICENSETERMS=YES /qb' -Wait -Verb RunAs
|
||||
Start-Process regedit -ArgumentList "-s B:\Automate\vc\vCenter6DB.reg" -Wait -Verb RunAs
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
}
|
||||
} else {
|
||||
Write-BuildLog "SQL Server 2012 Express SP1 for vCenter 6.7 not found. Exiting."
|
||||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
Write-BuildLog "Installing vCentre server 6.7. with embedded PSC"
|
||||
Start-Process B:\VIM_67\vCenter-Server\VMware-vCenter-Server.exe -ArgumentList " /qr CUSTOM_SETTINGS=B:\Automate\VC\vCentre60.json" -Wait -Verb RunAs
|
||||
}
|
||||
65 {
|
||||
Write-BuildLog "Starting vCenter 6.5 automation."
|
||||
if (Test-Path "b:\VIM_65\redist\SQLEXPR\SQLEXPR_x64_ENU.exe") {
|
||||
Write-BuildLog "SQL Server 2012 Express SP1 for vCenter 6.5 found; installing."
|
||||
Start-Process b:\VIM_65\redist\SQLEXPR\SQLEXPR_x64_ENU.exe -ArgumentList '/q /x:c:\temp /quiet' -Wait -Verb RunAs
|
||||
if (Test-Path "C:\temp\pcusource\1033_enu_lp\x64\setup\x64\sqlncli.msi") {
|
||||
copy C:\temp\pcusource\1033_enu_lp\x64\setup\x64\sqlncli.msi c:\temp
|
||||
} elseif (Test-Path "C:\temp\1033_enu_lp\x64\setup\x64\sqlncli.msi") {
|
||||
copy C:\temp\1033_enu_lp\x64\setup\x64\sqlncli.msi c:\temp
|
||||
}
|
||||
if (Test-Path "C:\temp\sqlncli.msi") {
|
||||
Write-BuildLog "Installing SQL native client."
|
||||
Start-Process msiexec -ArgumentList '/i C:\temp\sqlncli.msi ADDLOCAL=ALL IACCEPTSQLNCLILICENSETERMS=YES /qb' -Wait -Verb RunAs
|
||||
Start-Process regedit -ArgumentList "-s B:\Automate\vc\vCenter6DB.reg" -Wait -Verb RunAs
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
}
|
||||
} else {
|
||||
Write-BuildLog "SQL Server 2012 Express SP1 for vCenter 6.5 not found. Exiting."
|
||||
Read-Host "Press <Enter> to exit"
|
||||
exit
|
||||
}
|
||||
Write-BuildLog "Installing vCentre server 6.5. with embedded PSC"
|
||||
Start-Process B:\VIM_65\vCenter-Server\VMware-vCenter-Server.exe -ArgumentList " /qr CUSTOM_SETTINGS=B:\Automate\VC\vCentre60.json" -Wait -Verb RunAs
|
||||
Write-BuildLog "Installing vCentre Client Integration Plugin"
|
||||
If (!(Test-Path("c:\temp\VMware-ClientIntegrationPlugin-6.5.0.exe"))) {
|
||||
B:
|
||||
cd B:\VIM_65
|
||||
B:\Automate\_Common\wget.exe -q http://vsphereclient.vmware.com/vsphereclient/VMware-ClientIntegrationPlugin-6.5.0.exe
|
||||
}
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa -oc:\temp\ B:\VIM_65\VMware-ClientIntegrationPlugin-6.5.0.exe >> C:\ExtractLog.txt
|
||||
Start-Process C:\temp\VMware-ClientIntegrationPlugin.win32.exe -ArgumentList '/s /v /qn ' -Wait -Verb RunAs
|
||||
Start-Process C:\temp\VMware-ClientIntegrationService.win32.exe -ArgumentList '/s /v /qn ' -Wait -Verb RunAs
|
||||
|
||||
}
|
||||
60 {
|
||||
Write-BuildLog "Starting vCenter 6.0 automation."
|
||||
if (Test-Path "b:\VIM_60\redist\SQLEXPR\SQLEXPR_x64_ENU.exe") {
|
||||
|
@ -204,7 +244,9 @@ switch ($vcinstall) {
|
|||
Write-BuildLog "Installing SQL native client."
|
||||
Start-Process msiexec -ArgumentList '/i C:\temp\sqlncli.msi ADDLOCAL=ALL IACCEPTSQLNCLILICENSETERMS=YES /qb' -Wait -Verb RunAs
|
||||
Start-Process regedit -ArgumentList "-s B:\Automate\vc\vCenter6DB.reg" -Wait -Verb RunAs
|
||||
start-sleep -s 10
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
}
|
||||
} else {
|
||||
Write-BuildLog "SQL Server 2012 Express SP1 for vCenter 6.0 not found. Exiting."
|
||||
|
@ -213,6 +255,9 @@ switch ($vcinstall) {
|
|||
}
|
||||
Write-BuildLog "Installing vCentre server 6.0. with embedded PSC"
|
||||
Start-Process B:\VIM_60\vCenter-Server\VMware-vCenter-Server.exe -ArgumentList " /qr CUSTOM_SETTINGS=B:\Automate\VC\vCentre60.json" -Wait -Verb RunAs
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
Write-BuildLog "Installing vCentre Client Integration Plugin"
|
||||
If (!(Test-Path("c:\temp\VMware-ClientIntegrationPlugin-6.0.0.exe"))) {
|
||||
B:
|
||||
|
@ -226,28 +271,19 @@ switch ($vcinstall) {
|
|||
$null = copy B:\Automate\vc\SSHAutoConnect\*.* "C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Plugins\SSHAutoConnect"
|
||||
Write-BuildLog "Installing vSphere Client 6.0 VUM Plugin."
|
||||
Start-Process B:\VIM_60\updateManager\VMware-UMClient.exe -ArgumentList '/qb /s /w /L1033 /v" /qr"' -Wait -Verb RunAs
|
||||
Write-BuildLog "Installing vSphere Web Client Integration plugin."
|
||||
if ((Test-Path "b:\VMware-PowerCLI-6.0.*.exe") -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) {
|
||||
Write-BuildLog "VMware PowerCLI 6.0 installer found; installing."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-6.0.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.8.*.exe") {
|
||||
Write-BuildLog "VMware PowerCLI 5.8 installer found; installing."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.8.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.5.*.exe") {
|
||||
Write-BuildLog "VMware PowerCLI 5.5 installer found; installing."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.5.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.0.*.exe"){
|
||||
Write-BuildLog "PowerCLI installer is out of date, installing anyway."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.0.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} else {
|
||||
If ((Read-Host "Would you like to go to the PowerCLI download site (y/n)?") -like "y") {
|
||||
$IE=new-object -com internetexplorer.application
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62) {$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI600R1")}
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -le 62) {$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI58R1")}
|
||||
$IE.visible=$true
|
||||
If (($DeployVUM) -and ($vcinstall -eq "60")) {
|
||||
do {
|
||||
start-sleep 10
|
||||
} until ((get-process "msiexec" -ea SilentlyContinue) -eq $Null)
|
||||
Write-BuildLog "Installing vCenter Update Manager 6.0."
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) + [System.Environment]::OSVersion.Version.Minor) -ge 62) {
|
||||
Start-Process B:\VIM_60\redist\dotnet\dotnetfx35.exe -ArgumentList " /qb /norestart" -Wait -Verb RunAs
|
||||
} Else {
|
||||
Write-Host "OK, but the build will not work correctly without PowerCLI"
|
||||
import-module ServerManager
|
||||
$null = Add-WindowsFeature AS-NET-Framework
|
||||
}
|
||||
$Arguments = '""/L1033 /v" /qr VMUM_SERVER_SELECT=vc.lab.local VC_SERVER_IP=vc.lab.local VC_SERVER_ADMIN_USER=\"administrator@vsphere.local\" VC_SERVER_ADMIN_PASSWORD=\"VMware1!\" VCI_DB_SERVER_TYPE=Custom VCI_FORMAT_DB=1 DB_DSN=VUM DB_USERNAME=vpx DB_PASSWORD=VMware1!"'
|
||||
Start-Process B:\VIM_60\updateManager\VMware-UpdateManager.exe -ArgumentList $Arguments -Wait -Verb RunAs
|
||||
}
|
||||
}
|
||||
55 {
|
||||
|
@ -295,23 +331,6 @@ switch ($vcinstall) {
|
|||
Write-BuildLog "Installing vSphere Web Client Integration plugin."
|
||||
copy "C:\Program Files\VMware\Infrastructure\vSphereWebClient\server\work\deployer\s\global\72\0\container-app-war-5.5.0.war\vmrc\VMware-ClientIntegrationPlugin-5.5.0.exe" c:\
|
||||
Start-Process C:\VMware-ClientIntegrationPlugin-5.5.0.exe -ArgumentList '/v/qn' -Wait -Verb RunAs
|
||||
if (Test-Path "b:\VMware-PowerCLI-5.8.*.exe") {
|
||||
Write-BuildLog "VMware PowerCLI installer found; installing."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.8.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.5.*.exe") {
|
||||
Write-BuildLog "VMware PowerCLI installer found; installing."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.5.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.0.*.exe"){
|
||||
Write-BuildLog "PowerCLI installer is out of date, installing anyway."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.0.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} else { If ((Read-Host "Would you like to go to the PowerCLI download site (y/n)?") -like "y") {
|
||||
$IE=new-object -com internetexplorer.application
|
||||
$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI58R1")
|
||||
$IE.visible=$true
|
||||
} Else {
|
||||
Write-Host "OK, but the build will not work correctly without PowerCLI"
|
||||
}
|
||||
}
|
||||
}
|
||||
51 {
|
||||
Write-BuildLog "Starting vCenter 5.1 automation."
|
||||
|
@ -358,13 +377,6 @@ switch ($vcinstall) {
|
|||
Write-BuildLog "Installing vSphere Web Client Integration plugin."
|
||||
copy "C:\Program Files\VMware\Infrastructure\vSphereWebClient\server\work\org.eclipse.virgo.kernel.deployer_3.0.3.RELEASE\staging\global\bundle\com.vmware.vsphere.client.containerapp\5.1.0\container-app-war-5.1.0.war\vmrc\VMware-ClientIntegrationPlugin-5.1.0.exe" c:\
|
||||
Start-Process C:\VMware-ClientIntegrationPlugin-5.1.0.exe -ArgumentList '/v/qn' -Wait -Verb RunAs
|
||||
if (Test-Path "b:\VMware-PowerCLI-5.1.*.exe") {
|
||||
Write-BuildLog "VMware PowerCLI installer found; installing."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.1.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} elseif (Test-Path "b:\VMware-PowerCLI-5.0.*.exe"){
|
||||
Write-BuildLog "PowerCLI installer is out of date, installing anyway."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.0.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} else {Write-BuildLog "PowerCLI installer not found."}
|
||||
}
|
||||
5 {
|
||||
Write-BuildLog "Starting vCenter 5 automation."
|
||||
|
@ -388,11 +400,7 @@ switch ($vcinstall) {
|
|||
Write-BuildLog "Installing vCenter and vSphere client."
|
||||
copy b:\automate\vc\vc50.cmd c:\
|
||||
start-process c:\vc50.cmd -Wait -verb RunAs
|
||||
if (Test-Path "b:\VMware-PowerCLI-5.0.*.exe"){
|
||||
Write-BuildLog "VMware PowerCLI installer found; installing."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.0.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} else {Write-BuildLog "PowerCLI installer not found."}
|
||||
}
|
||||
}
|
||||
4 {
|
||||
Write-BuildLog "Starting vCenter 4.1 automation."
|
||||
if (Test-Path "b:\VIM_41\redist\SQLEXPR\x64\SQLEXPR.EXE") {
|
||||
|
@ -408,11 +416,7 @@ switch ($vcinstall) {
|
|||
}
|
||||
copy b:\automate\vc\vc41.cmd c:\
|
||||
start-process c:\vc41.cmd -Wait -verb RunAs
|
||||
if (Test-Path "b:\VMware-PowerCLI-5.0.*.exe"){
|
||||
Write-BuildLog "VMware PowerCLI installer found; installing."
|
||||
Start-Process (Get-ChildItem b:\VMware-PowerCLI-5.0.*.exe).FullName -ArgumentList '/q /s /w /L1033 /V" /qb"' -Wait -Verb RunAs
|
||||
} else {Write-BuildLog "PowerCLI installer not found."}
|
||||
}
|
||||
}
|
||||
Base {
|
||||
if (Test-Path "b:\VIM_55\redist\SQLEXPR\SQLEXPR_x64_ENU.exe") {
|
||||
Write-BuildLog "SQL Server 2008 R2 Express SP1 for vCenter 5.5 found; installing."
|
||||
|
@ -460,6 +464,7 @@ switch ($vcinstall) {
|
|||
}
|
||||
None {}
|
||||
}
|
||||
|
||||
If ($viewinstall -ne "None") {
|
||||
$Files = get-childitem "b:\view$viewinstall"
|
||||
for ($i=0; $i -lt $files.Count; $i++) {
|
||||
|
@ -467,33 +472,30 @@ If ($viewinstall -ne "None") {
|
|||
}
|
||||
}
|
||||
switch ($viewinstall) {
|
||||
70 {
|
||||
75 {
|
||||
if (Test-Path "B:\View75\VMware-viewcomposer-*.exe") {
|
||||
Write-BuildLog "Setup install VMware View 7.5 Composer, reboot required before install"
|
||||
copy-item $Installer C:\
|
||||
}
|
||||
} 70 {
|
||||
if (Test-Path "B:\View70\VMware-viewcomposer-*.exe") {
|
||||
Write-BuildLog "Setup install VMware View 7.0 Composer, reboot required before install"
|
||||
copy-item $Installer C:\
|
||||
Write-BuildLog "Setup script recall for Phase 2 completion"
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f >> c:\buildlog.txt
|
||||
}
|
||||
} 60 {
|
||||
if (Test-Path "B:\View60\VMware-viewcomposer-*.exe") {
|
||||
Write-BuildLog "Setup install VMware View 6.0 Composer, reboot required before install"
|
||||
copy-item $Installer C:\
|
||||
Write-BuildLog "Setup script recall for Phase 2 completion"
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f >> c:\buildlog.txt
|
||||
}
|
||||
} 53 {
|
||||
if (Test-Path "B:\View53\VMware-viewcomposer-5.3*.exe") {
|
||||
Write-BuildLog "Setup install VMware View 5.3 Composer, reboot required before install"
|
||||
copy-item $Installer C:\
|
||||
Write-BuildLog "Setup script recall for Phase 2 completion"
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f >> c:\buildlog.txt
|
||||
}
|
||||
} 52 {
|
||||
if (Test-Path "B:\View52\VMware-viewcomposer-5.2*.exe") {
|
||||
Write-BuildLog "Setup install VMware View 5.2 Composer, reboot required before install"
|
||||
copy-item $Installer C:\
|
||||
Write-BuildLog "Setup script recall for Phase 2 completion"
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f >> c:\buildlog.txt
|
||||
}
|
||||
}
|
||||
51 {
|
||||
|
@ -518,54 +520,16 @@ if (Test-Path "b:\VMware-vSphere-CLI.exe") {
|
|||
Write-BuildLog "VMware vSphere CLI installer not found."
|
||||
}
|
||||
|
||||
Write-BuildLog "Adding Domain Admins to vCenter administrators role and setting PowerCLI certificate warning."
|
||||
if (!(($vcinstall -eq "None") -or ($vcinstall -eq "Base"))) {
|
||||
Add-PSSnapin VMware.VimAutomation.Core
|
||||
$PCLIVer = Get-PowerCLIVersion
|
||||
if ((($PCLIVer.Major * 10 ) + $PCLIVer.Minor) -ge 51) {
|
||||
$null = Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -confirm:$false -Scope "AllUsers"
|
||||
}
|
||||
If ($vcinstall -eq "60") {
|
||||
$null = connect-viserver vc.lab.local -user administrator@vsphere.local -password VMware1!
|
||||
$null = New-VIPermission -Role Admin -Principal 'Administrator' -Entity Datacenters
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
If ($DeployVUM) {
|
||||
Write-BuildLog "Installing vCenter Update Manager 6.0."
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62) {
|
||||
Start-Process B:\VIM_60\redist\dotnet\dotnetfx35.exe -ArgumentList " /qb /norestart" -Wait -Verb RunAs
|
||||
} Else {
|
||||
import-module ServerManager
|
||||
Add-WindowsFeature AS-NET-Framework
|
||||
}
|
||||
$Arguments = '""/L1033 /v" /qr VMUM_SERVER_SELECT=vc.lab.local VC_SERVER_IP=vc.lab.local VC_SERVER_ADMIN_USER=\"VC\administrator\" VC_SERVER_ADMIN_PASSWORD=' + $AdminPWD +' VCI_DB_SERVER_TYPE=Custom VCI_FORMAT_DB=1 DB_DSN=VUM DB_USERNAME=vpx DB_PASSWORD=VMware1!"'
|
||||
Start-Process B:\VIM_60\updateManager\VMware-UpdateManager.exe -ArgumentList $Arguments -Wait -Verb RunAs
|
||||
}
|
||||
} ElseIf ($vcinstall -eq "55") {
|
||||
$null = connect-viserver vc.lab.local -user vc\administrator -password $AdminPWD
|
||||
$null = New-VIPermission -Role Admin -Principal 'lab\Domain Admins' -Entity Datacenters
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
} ElseIf ($vcinstall -eq "51") {
|
||||
$null = connect-viserver vc.lab.local -user vc\administrator -password $AdminPWD
|
||||
$null = New-VIPermission -Role Admin -Principal 'Administrators' -Entity Datacenters
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
} Else {
|
||||
$null = connect-viserver vc.lab.local -user vc\administrator -password $AdminPWD
|
||||
$null = New-VIPermission -Role Admin -Principal 'lab\Domain Admins' -Entity Datacenters
|
||||
$null = New-VIPermission -Role Admin -Principal 'Administrator' -Entity Datacenters
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
}
|
||||
}
|
||||
|
||||
if ($buildvm -and (Test-Path B:\Win2k3.iso)) {
|
||||
Write-BuildLog "Creating fully automated Windows 2003 install ISO."
|
||||
$null = New-Item -Path c:\temp\Win2K3 -ItemType Directory -Force
|
||||
cd c:\temp\Win2K3
|
||||
. "C:\Program Files\7-Zip\7z.exe" x -r -y -aoa b:\win2k3.iso >> c:\temp\Extractlog.txt
|
||||
cmd /c copy c:\temp\Win2K3\[BOOT]\Bootable_NoEmulation.img c:\temp\Win2K3\win2k3.img
|
||||
cmd /c copy C:\temp\Win2K3\[BOOT]\Boot-NoEmul.img C:\temp\Win2K3\Win2K3.img
|
||||
if (!(Test-Path b:\Auto2K3.iso)) {
|
||||
Copy-Item -Path C:\temp\Auto2K3.sif -Destination c:\temp\Win2K3\i386\winnt.sif -Force
|
||||
Copy-Item B:\Automate\_Common\Auto2K3.cmd c:\temp\Win2k3
|
||||
b:\automate\vc\mkisofs -b win2k3.img -c boot.catalog -hide boot.catalog -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 -iso-level 2 -J -l -D -N -joliet-long -quiet -relaxed-filenames -V "WIN2K3" -o b:\Auto2K3.iso .
|
||||
b:\automate\vc\mkisofs -b Win2K3.img -c boot.catalog -hide boot.catalog -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 -iso-level 2 -J -l -D -N -joliet-long -quiet -relaxed-filenames -V "WIN2K3" -o b:\Auto2K3.iso .
|
||||
}
|
||||
if (!(Test-Path b:\Windows2K3.iso)) {
|
||||
Write-BuildLog "Creating Lab Windows 2003 install ISO"
|
||||
|
@ -599,7 +563,7 @@ if ($buildviewvm -and (Test-Path B:\WinXP.iso)) {
|
|||
}
|
||||
if (!(Test-Path b:\AutoXP.iso)){
|
||||
Write-BuildLog "Creating fully automated Windows XP install ISO for VMware View"
|
||||
cmd /c copy c:\temp\WinXP\[BOOT]\Bootable_NoEmulation.img c:\temp\WinXP\winXP.img
|
||||
cmd /c copy c:\temp\WinXP\[BOOT]\Boot-NoEmul.img c:\temp\WinXP\winXP.img
|
||||
rd c:\temp\WinXP\[BOOT]
|
||||
Move-Item -Path C:\temp\AutoXP.sif -Destination c:\temp\WinXP\i386\winnt.sif
|
||||
$null = New-Item -Path C:\temp\WinXP\$OEM$ -ItemType Directory -Force
|
||||
|
@ -612,6 +576,11 @@ if ($buildviewvm -and (Test-Path B:\WinXP.iso)) {
|
|||
cd c:\
|
||||
}
|
||||
|
||||
if (!(($vcinstall -eq "None") -or ($vcinstall -eq "Base"))) {
|
||||
$PCLIVernum = deployPowerCLI
|
||||
Copy-Item -Path "b:\automate\vc\Phase2.ps1" "c:\Phase2.ps1" -force
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Build /t REG_SZ /d "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe c:\Phase2.ps1" /f
|
||||
}
|
||||
Write-BuildLog "Cleanup and creating Desktop shortcuts."
|
||||
regedit -s b:\Automate\vc\vSphereClient.reg
|
||||
Remove-Item "C:\Users\Public\Desktop\*.lnk"
|
||||
|
@ -623,23 +592,17 @@ Remove-Item c:\temp\* -Force -Recurse
|
|||
copy b:\Automate\vc\Shortcuts.vbs c:\Shortcuts.vbs
|
||||
wscript c:\Shortcuts.vbs
|
||||
copy b:\Automate\*.ps1 c:\
|
||||
|
||||
Write-BuildLog "Disable Internet Explorer Enhanced Security to allow access to Web Client"
|
||||
$AdminKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
|
||||
$UserKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}"
|
||||
Set-ItemProperty -Path $AdminKey -Name "IsInstalled" -Value 0
|
||||
Set-ItemProperty -Path $UserKey -Name "IsInstalled" -Value 0
|
||||
|
||||
If (($AutoAddHosts -eq "True") -and (Test-Path "c:\Addhosts.ps1")){
|
||||
Write-BuildLog " "
|
||||
Write-BuildLog "Automatically running AddHosts script."
|
||||
Write-BuildLog " "
|
||||
Start-Process c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -ArgumentList " C:\AddHosts.ps1" -wait
|
||||
If ((([System.Environment]::OSVersion.Version.Major *10) + [System.Environment]::OSVersion.Version.Minor) -ge 62) {
|
||||
Write-BuildLog "Disable Internet Explorer Enhanced Security to allow access to Web Client"
|
||||
$AdminKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
|
||||
$UserKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}"
|
||||
Set-ItemProperty -Path $AdminKey -Name "IsInstalled" -Value 0
|
||||
Set-ItemProperty -Path $UserKey -Name "IsInstalled" -Value 0
|
||||
}
|
||||
Write-BuildLog "Installing VMware tools, build complete after reboot."
|
||||
if (Test-Path B:\VMTools\setup64.exe) {
|
||||
#Read-Host "End of install checkpoint, before VMTools"
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none") -and (($vcinstall -eq "None") -or ($vcinstall -eq "Base"))){
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
|
@ -652,6 +615,8 @@ if (Test-Path B:\VMTools\setup64.exe) {
|
|||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
$mailmessage.dispose()
|
||||
$SMTPClient.dispose()
|
||||
}
|
||||
Start-Process B:\VMTools\setup64.exe -ArgumentList '/s /v "/qn"' -verb RunAs -Wait
|
||||
}
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
. "C:\PSFunctions.ps1"
|
||||
Write-BuildLog "Phase2.ps1 waiting ten more minutes for vCentre services to finish starting"
|
||||
start-sleep 600
|
||||
Write-BuildLog "Determining automate.ini settings."
|
||||
$viewinstall = ((Select-String -SimpleMatch "ViewInstall=" -Path "B:\Automate\automate.ini").line).substring(12)
|
||||
Write-BuildLog " VMware View install set to $viewinstall."
|
||||
$vcinstall = "55"
|
||||
$vcinstall = ((Select-String -SimpleMatch "VCInstall=" -Path "B:\Automate\automate.ini").line).substring(10)
|
||||
If ($vcinstall -eq "50") {$vcinstall = "5"}
|
||||
$AutoAddHosts = ((Select-String -SimpleMatch "AutoAddHosts=" -Path "B:\Automate\automate.ini").line).substring(13)
|
||||
if ($AutoAddHosts -like "true") {
|
||||
$AutoAddHosts = $true
|
||||
Write-BuildLog " Hosts will be automatically added to vCenter after build completes."
|
||||
} else {
|
||||
$AutoAddHosts = $false
|
||||
}
|
||||
$DeployVUM = $false
|
||||
if ((((Select-String -SimpleMatch "DeployVUM=" -Path "B:\Automate\automate.ini").line).substring(10)) -like "true") {
|
||||
$DeployVUM = $true
|
||||
Write-BuildLog " VUM will be installed."
|
||||
} else {
|
||||
$DeployVUM = $false
|
||||
Write-BuildLog " No VUM."
|
||||
}
|
||||
$AdminPWD = "VMware1!"
|
||||
$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "B:\Automate\automate.ini").line).substring(9)
|
||||
$emailto = ((Select-String -SimpleMatch "emailto=" -Path "B:\Automate\automate.ini").line).substring(8)
|
||||
$SmtpServer = ((Select-String -SimpleMatch "SmtpServer=" -Path "B:\Automate\automate.ini").line).substring(11)
|
||||
$PCLIVernum = "Now PowerCLI"
|
||||
$PCLIVernum = Get-PowerCLIVersion
|
||||
Write-BuildLog "Adding Domain Admins to vCenter administrators role and setting PowerCLI $PCLIVernum certificate warning."
|
||||
If (($vcinstall -eq "67") -or ($vcinstall -eq "65")) {
|
||||
$null = connect-viserver vc.lab.local -user administrator@vsphere.local -password VMware1!
|
||||
$null = New-VIPermission -Role Admin -Principal 'Administrator' -Entity Datacenters
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
} elseif ($vcinstall -eq "60") {
|
||||
$null = connect-viserver vc.lab.local -user administrator@vsphere.local -password VMware1!
|
||||
$null = New-VIPermission -Role Admin -Principal 'Administrator' -Entity Datacenters
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
} ElseIf (($vcinstall -eq "55") -or ($vcinstall -eq "51")) {
|
||||
$null = connect-viserver vc.lab.local -user vc\administrator -password $AdminPWD
|
||||
$null = New-VIPermission -Role Admin -Principal 'Administrators' -Entity Datacenters
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
} Else {
|
||||
$null = connect-viserver vc.lab.local -user vc\administrator -password $AdminPWD
|
||||
$null = New-VIPermission -Role Admin -Principal 'lab\Domain Admins' -Entity Datacenters
|
||||
$null = New-VIPermission -Role Admin -Principal 'Administrator' -Entity Datacenters
|
||||
$null = Disconnect-VIServer -Server * -confirm:$false
|
||||
}
|
||||
If (($AutoAddHosts -eq "True") -and (Test-Path "c:\Addhosts.ps1")){
|
||||
Write-BuildLog "Automatically running AddHosts script."
|
||||
Start-Process c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -ArgumentList " C:\AddHosts.ps1" -wait
|
||||
}
|
||||
if (Test-Path "C:\VMware-viewcomposer*") {
|
||||
$Files = get-childitem "C:\"
|
||||
for ($i=0; $i -lt $files.Count; $i++) {
|
||||
If ($Files[$i].Name -like "VMware-viewcomposer*") {$Installer = $Files[$i].FullName}
|
||||
}
|
||||
switch ($viewinstall) {
|
||||
75 {
|
||||
Write-BuildLog "Installing VMware View 7.5 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
} 70 {
|
||||
Write-BuildLog "Installing VMware View 7.0 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
} 60 {
|
||||
Write-BuildLog "Installing VMware View 6.0 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
} 53 {
|
||||
Write-BuildLog "Installing VMware View 5.3 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
} 52 {
|
||||
Write-BuildLog "Installing VMware View 5.2 Composer"
|
||||
Start-Process $Installer -ArgumentList '/s /v" /qn AgreeToLicense="Yes" DB_USERNAME="VMview" DB_PASSWORD="VMware1!" DB_DSN="ViewComposer" REBOOT="ReallySuppress" "' -Wait -Verb RunAs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (([bool]($emailto -as [Net.Mail.MailAddress])) -and ($SmtpServer -ne "none")){
|
||||
Write-BuildLog "Emailing log"
|
||||
$mailmessage = New-Object system.net.mail.mailmessage
|
||||
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
|
||||
$mailmessage.from = "AutoLab<autolab@labguides.com>"
|
||||
$mailmessage.To.add($emailto)
|
||||
$Summary = "Completed AutoLab VM build.`r`n"
|
||||
$Summary += "The build of $env:computername has finished, installing VMware Tools and rebooting`r`n"
|
||||
$Summary += "The build log is attached`r`n"
|
||||
$mailmessage.Subject = "$env:computername VM build finished"
|
||||
$mailmessage.Body = $Summary
|
||||
$attach = new-object Net.Mail.Attachment("C:\buildlog.txt")
|
||||
$mailmessage.Attachments.Add($attach)
|
||||
$SMTPClient.Send($mailmessage)
|
||||
$mailmessage.dispose()
|
||||
$SMTPClient.dispose()
|
||||
}
|
|
@ -1,14 +1,4 @@
|
|||
set WshShell = WScript.CreateObject("WScript.Shell")
|
||||
set oShortCutLink = WshShell.CreateShortcut("C:\Users\Public\Desktop\vSphere.lnk")
|
||||
oShortCutLink.TargetPath = "C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe"
|
||||
oShortCutLink.Arguments = "-s vc.lab.local -PassthroughAuth"
|
||||
oShortCutLink.Save
|
||||
|
||||
set oShortCutLink = WshShell.CreateShortcut("C:\Users\Public\Desktop\VMware vSphere Client.lnk")
|
||||
oShortCutLink.TargetPath = "C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe"
|
||||
oShortCutLink.Save
|
||||
|
||||
|
||||
set oShortCutLink = WshShell.CreateShortcut("C:\Users\Public\Desktop\AutoLab Script Menu.lnk")
|
||||
oShortCutLink.TargetPath = "%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe"
|
||||
oShortCutLink.Arguments = " c:\ScriptMenu.ps1"
|
||||
|
|
|
@ -70,5 +70,32 @@
|
|||
"vmdir.password" : "VMware1!",
|
||||
"vmdir.replication-partner-hostname" : null,
|
||||
"vmdir.site-name" : "Default-First-Site",
|
||||
"vmware.data.directory" : "C:\\ProgramData\\VMware\\"
|
||||
"vmware.data.directory" : "C:\\ProgramData\\VMware\\",
|
||||
"ceip": {
|
||||
"__comments": [
|
||||
"++++VMware Customer Experience Improvement Program (CEIP)++++",
|
||||
"VMware's Customer Experience Improvement Program (CEIP) ",
|
||||
"provides VMware with information that enables VMware to ",
|
||||
"improve its products and services, to fix problems, ",
|
||||
"and to advise you on how best to deploy and use our ",
|
||||
"products. As part of the CEIP, VMware collects technical ",
|
||||
"information about your organization's use of VMware products ",
|
||||
"and services on a regular basis in association with your ",
|
||||
"organization's VMware license key(s). This information does ",
|
||||
"not personally identify any individual. ",
|
||||
"For more details about the Program and how VMware uses ",
|
||||
"the information it collects through CEIP, please see the ",
|
||||
"[http://www.vmware.com/info?id=1399 product documentation]. ",
|
||||
"By default we have 'ceip.enabled': true, which indicates ",
|
||||
"that you are joining CEIP. If you prefer not to ",
|
||||
"participate in VMware's CEIP for this product, you should ",
|
||||
"disable CEIP by setting 'ceip.enable': false. You may join ",
|
||||
"or leave VMware's CEIP for this product at any time. Please ",
|
||||
"confirm your acknowledgement by setting ",
|
||||
"'ceip.acknowledged': true. ",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||
],
|
||||
"ceip.enabled": true,
|
||||
"ceip.acknowledged": true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,18 @@
|
|||
# Build Validation script for vSphere 6.0 AutoLab
|
||||
# Build Validation script for vSphere AutoLab
|
||||
#
|
||||
# Version 2.6
|
||||
# Version 3.0
|
||||
#
|
||||
#
|
||||
# Include the functions script, this is used to keep this script clean
|
||||
$Auto = $False
|
||||
foreach ($arg in $args) {
|
||||
If ($arg -like "auto") { $Auto = $True}
|
||||
}
|
||||
if (Test-Path C:\PSFunctions.ps1) {
|
||||
. "C:\PSFunctions.ps1"
|
||||
} else {
|
||||
Write-Host "PSFunctions.ps1 not found. Please copy all PowerShell files from B:\Automate to C:\ and rerun AddHosts.ps1"
|
||||
Read-Host "Press <Enter> to exit"
|
||||
If (!($Auto)) {Read-Host "Press <Enter> to exit" }
|
||||
exit
|
||||
}
|
||||
|
||||
|
@ -23,13 +27,19 @@ if (Test-Administrator) {
|
|||
# make script window as tall as possible
|
||||
|
||||
$a = (Get-Host).UI.RawUI
|
||||
$a.WindowTitle = "AutoLab Validation"
|
||||
$b = $a.WindowSize
|
||||
$b.Height = $a.MaxWindowSize.Height - 1
|
||||
$a.WindowSize = $b
|
||||
Import-Module C:\windows\system32\WASP.dll
|
||||
Select-Window -Title "Administrator:" | set-windowposition -left 3 -top 3
|
||||
If (!(Test-Path "B:\*")) {
|
||||
net use B: \\192.168.199.7\Build
|
||||
Select-Window -Title "AutoLab Validation" | set-windowposition -left 75 -top 3
|
||||
If (!(Test-Path "B:\Automate\automate.ini" -ErrorAction SilentlyContinue)) {
|
||||
net use b: \\192.168.199.7\Build
|
||||
}
|
||||
$BDrive = $true
|
||||
If (!(Test-Path "B:\Automate\automate.ini" -ErrorAction SilentlyContinue)) {
|
||||
$BDrive = $false
|
||||
Write-Host "B: Drive not mapped, less tests"
|
||||
}
|
||||
$CompName = gc env:computername
|
||||
Write-Host "Validating" $CompName -foregroundcolor "cyan"
|
||||
|
@ -37,52 +47,54 @@ Write-Host "Error events from system eventlog on " $CompName -foregroundcolor "c
|
|||
get-eventlog -LogName System -entrytype Error -ErrorAction SilentlyContinue | Format-table -property TimeGenerated, Message -autosize
|
||||
if ($CompName -eq "DC") {
|
||||
Write-Host "Validating required Build share components." -foregroundcolor "cyan"
|
||||
$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "B:\Automate\automate.ini").line).substring(9)
|
||||
If ($AdminPWD -eq "VMware1!") {
|
||||
Write-Host "Default admin password set, this isn't safe." -foregroundcolor "Red"
|
||||
$NewPWD = Read-Host "Enter a new admin password"
|
||||
If ($NewPWD -ne "") {
|
||||
Write-Host "Setting new password" -foregroundcolor "Green"
|
||||
$OldAdminPWD = $AdminPWD
|
||||
$AdminPWD = $NewPWD
|
||||
$FileContent = get-content B:\Automate\automate.ini
|
||||
Set-Content B:\Automate\automate.ini ""
|
||||
Foreach ($Line in $FileContent){
|
||||
If ($Line.StartsWith("Adminpwd")) { $Line = "Adminpwd=$NewPWD"}
|
||||
Add-Content B:\Automate\automate.ini $Line
|
||||
if ($BDrive) {
|
||||
$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "B:\Automate\automate.ini").line).substring(9)
|
||||
If (($AdminPWD -eq "VMware1!") -and (!($Auto))) {
|
||||
Write-Host "Default admin password set, this isn't safe." -foregroundcolor "Red"
|
||||
$NewPWD = Read-Host "Enter a new admin password"
|
||||
If ($NewPWD -ne "") {
|
||||
Write-Host "Setting new password" -foregroundcolor "Green"
|
||||
$OldAdminPWD = $AdminPWD
|
||||
$AdminPWD = $NewPWD
|
||||
$FileContent = get-content B:\Automate\automate.ini
|
||||
Set-Content B:\Automate\automate.ini ""
|
||||
Foreach ($Line in $FileContent){
|
||||
If ($Line.StartsWith("Adminpwd")) { $Line = "Adminpwd=$NewPWD"}
|
||||
Add-Content B:\Automate\automate.ini $Line
|
||||
}
|
||||
net user SVC_Veeam $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user SVC_SRM $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user DomUser $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user vi-admin $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user administrator $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user ada $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user alan $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user grace $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user charles $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
B:\automate\_Common\Autologon administrator lab $AdminPWD
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx1-4.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx1-4.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx1-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx1-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx2-4.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx2-4.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx2-4c.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx2-4c.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx2-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx2-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx3-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx3-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx4-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx4-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx11-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx11-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx12-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx12-5.cfg
|
||||
$service = gwmi win32_service -filter "name='MSSQL`$SQLEXPRESS'"
|
||||
$null = $service.change($null,$null,$null,$null,$null,$null,$null,$AdminPWD)
|
||||
Write-Host "Restarting SQL Express with new password" -foregroundcolor "Green"
|
||||
$null = Restart-Service "MSSQL`$SQLEXPRESS" -force
|
||||
}
|
||||
net user SVC_Veeam $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user SVC_SRM $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user DomUser $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user vi-admin $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user administrator $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user ada $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user alan $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user grace $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
net user charles $AdminPWD >> C:\AD-Users.log 2>> C:\Error.log
|
||||
B:\automate\_Common\Autologon administrator lab $AdminPWD
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx1-4.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx1-4.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx1-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx1-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx2-4.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx2-4.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx2-4c.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx2-4c.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx2-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx2-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx3-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx3-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx4-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx4-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx11-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx11-5.cfg
|
||||
$TempContent = Get-Content B:\Automate\Hosts\esx12-5.cfg |%{$_ -replace $OldAdminPWD,$AdminPWD}
|
||||
$TempContent | Set-Content B:\Automate\Hosts\esx12-5.cfg
|
||||
$service = gwmi win32_service -filter "name='MSSQL`$SQLEXPRESS'"
|
||||
$null = $service.change($null,$null,$null,$null,$null,$null,$null,$AdminPWD)
|
||||
Write-Host "Restarting SQL Express with new password" -foregroundcolor "Green"
|
||||
$null = Restart-Service "MSSQL`$SQLEXPRESS" -force
|
||||
}
|
||||
}
|
||||
If ((Get-WmiObject Win32_BIOS).Manufacturer.Tolower() -like "bochs*") {
|
||||
|
@ -98,82 +110,104 @@ if ($CompName -eq "DC") {
|
|||
Write-Host "Make sure the ESXi hosts are properly built & restart cleanly" -foregroundcolor "cyan"
|
||||
}
|
||||
}
|
||||
$vSpherePaths = @{"ESX41"="\\192.168.199.7\Build\ESX41\*";"ESXi41"="\\192.168.199.7\Build\ESXi41\*";"vCenter41"="\\192.168.199.7\Build\VIM_41\*";"ESXi50"="\\192.168.199.7\Build\ESXi50\*";"vCenter50"="\\192.168.199.7\Build\VIM_50\*";"ESXi51"="\\192.168.199.7\Build\ESXi51\*";"vCenter51"="\\192.168.199.7\Build\VIM_51\*";"ESXi55"="\\192.168.199.7\Build\ESXi55\*";"vCenter55"="\\192.168.199.7\Build\VIM_55\*";"ESXi60"="\\192.168.199.7\Build\ESXi60\*";"vCenter60"="\\192.168.199.7\Build\VIM_60\*"}
|
||||
$vSpherePaths.GetEnumerator() | % {if (!(Test-Path $_.Value)) {New-Variable -Name $_.Name -Value $false -force} else {New-Variable -Name $_.Name -Value $true -force}}
|
||||
if ($vCenter41 -and ($ESXi41 -or $ESX41)) {
|
||||
Write-Host "vCenter 4.1 & ESXi 4.1 found." -foregroundcolor "green"
|
||||
$vSphere41 = $true
|
||||
} elseif ($vCenter41 -or ($ESXi41 -or $ESX41)) {
|
||||
Write-Host "vSphere 4.1 installation requirements not met. Please verify that both vCenter 4.1 & ESXi 4.1 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere41 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 4.1 & ESXi 4.1 not found." -foregroundcolor "cyan"
|
||||
$vSphere41 = $false
|
||||
}
|
||||
if ($vCenter50 -and $ESXi50) {
|
||||
Write-Host "vCenter 5.0 & ESXi 5.0 found." -foregroundcolor "green"
|
||||
$vSphere50 = $true
|
||||
} elseif ($vCenter50 -or $ESXi50) {
|
||||
Write-Host "vSphere 5.0 installation requirements not met. Please verify that both vCenter 5.0 & ESXi 5.0 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere50 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 5.0 & ESXi 5.0 not found." -foregroundcolor "cyan"
|
||||
$vSphere50 = $false
|
||||
}
|
||||
if ($vCenter51 -and $ESXi51) {
|
||||
Write-Host "vCenter 5.1 & ESXi 5.1 found." -foregroundcolor "green"
|
||||
$vSphere51 = $true
|
||||
} elseif ($vCenter51 -or $ESXi51) {
|
||||
Write-Host "vSphere 5.1 installation requirements not met. Please verify that both vCenter 5.1 & ESXi 5.1 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere51 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 5.1 & ESXi 5.1 not found." -foregroundcolor "cyan"
|
||||
$vSphere51 = $false
|
||||
}
|
||||
if ($vCenter55 -and $ESXi55) {
|
||||
Write-Host "vCenter 5.5 & ESXi 5.5 found." -foregroundcolor "green"
|
||||
$vSphere55 = $true
|
||||
} elseif ($vCenter55 -or $ESXi55) {
|
||||
Write-Host "vSphere 5.5 installation requirements not met. Please verify that both vCenter 5.5 & ESXi 5.5 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere55 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 5.5 & ESXi 5.5 not found." -foregroundcolor "cyan"
|
||||
$vSphere55 = $false
|
||||
}
|
||||
if ($vCenter60 -and $ESXi60) {
|
||||
Write-Host "vCenter 6.0 & ESXi 6.0 found." -foregroundcolor "green"
|
||||
$vSphere60 = $true
|
||||
} elseif ($vCenter60 -or $ESXi60) {
|
||||
Write-Host "vSphere 6.0 installation requirements not met. Please verify that both vCenter 6.0 & ESXi 6.0 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere60 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 6.0 & ESXi 6.0 not found." -foregroundcolor "cyan"
|
||||
$vSphere60 = $false
|
||||
}
|
||||
if (!($vSphere41 -or $vSphere50 -or $vSphere51 -or $vSphere55 -or $vSphere60)) {
|
||||
Write-Host "Matching vCenter & ESXi distributions not found. Please check the Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
Check-File "\\192.168.199.7\Build\VMware-PowerCLI*.exe" "PowerCLI installer"
|
||||
If (!(Test-Path "\\192.168.199.7\Build\VMware-PowerCLI*.exe")) {
|
||||
If ((Read-Host "Would you like to go to the PowerCLI download site (y/n)?") -like "y") {
|
||||
$IE=new-object -com internetexplorer.application
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62) {$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI600R1")}
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -le 62) {$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI58R1")}
|
||||
$IE.visible=$true
|
||||
} Else {
|
||||
Write-Host "OK, but the VC build will not work correctly without PowerCLI"
|
||||
if ($BDrive) {
|
||||
$vSpherePaths = @{"ESX41"="\\192.168.199.7\Build\ESX41\*";"ESXi41"="\\192.168.199.7\Build\ESXi41\*";"vCenter41"="\\192.168.199.7\Build\VIM_41\*";"ESXi50"="\\192.168.199.7\Build\ESXi50\*";"vCenter50"="\\192.168.199.7\Build\VIM_50\*";"ESXi51"="\\192.168.199.7\Build\ESXi51\*";"vCenter51"="\\192.168.199.7\Build\VIM_51\*";"ESXi55"="\\192.168.199.7\Build\ESXi55\*";"vCenter55"="\\192.168.199.7\Build\VIM_55\*";"ESXi60"="\\192.168.199.7\Build\ESXi60\*";"vCenter60"="\\192.168.199.7\Build\VIM_60\*";"ESXi65"="\\192.168.199.7\Build\ESXi65\*";"vCenter65"="\\192.168.199.7\Build\VIM_65\*";"ESXi67"="\\192.168.199.7\Build\ESXi67\*";"vCenter67"="\\192.168.199.7\Build\VIM_67\*"}
|
||||
$vSpherePaths.GetEnumerator() | % {if (!(Test-Path $_.Value)) {New-Variable -Name $_.Name -Value $false -force} else {New-Variable -Name $_.Name -Value $true -force}}
|
||||
if ($vCenter41 -and ($ESXi41 -or $ESX41)) {
|
||||
Write-Host "vCenter 4.1 & ESXi 4.1 found." -foregroundcolor "green"
|
||||
$vSphere41 = $true
|
||||
} elseif ($vCenter41 -or ($ESXi41 -or $ESX41)) {
|
||||
Write-Host "vSphere 4.1 installation requirements not met. Please verify that both vCenter 4.1 & ESXi 4.1 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere41 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 4.1 & ESXi 4.1 not found." -foregroundcolor "cyan"
|
||||
$vSphere41 = $false
|
||||
}
|
||||
if ($vCenter50 -and $ESXi50) {
|
||||
Write-Host "vCenter 5.0 & ESXi 5.0 found." -foregroundcolor "green"
|
||||
$vSphere50 = $true
|
||||
} elseif ($vCenter50 -or $ESXi50) {
|
||||
Write-Host "vSphere 5.0 installation requirements not met. Please verify that both vCenter 5.0 & ESXi 5.0 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere50 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 5.0 & ESXi 5.0 not found." -foregroundcolor "cyan"
|
||||
$vSphere50 = $false
|
||||
}
|
||||
if ($vCenter51 -and $ESXi51) {
|
||||
Write-Host "vCenter 5.1 & ESXi 5.1 found." -foregroundcolor "green"
|
||||
$vSphere51 = $true
|
||||
} elseif ($vCenter51 -or $ESXi51) {
|
||||
Write-Host "vSphere 5.1 installation requirements not met. Please verify that both vCenter 5.1 & ESXi 5.1 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere51 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 5.1 & ESXi 5.1 not found." -foregroundcolor "cyan"
|
||||
$vSphere51 = $false
|
||||
}
|
||||
if ($vCenter55 -and $ESXi55) {
|
||||
Write-Host "vCenter 5.5 & ESXi 5.5 found." -foregroundcolor "green"
|
||||
$vSphere55 = $true
|
||||
} elseif ($vCenter55 -or $ESXi55) {
|
||||
Write-Host "vSphere 5.5 installation requirements not met. Please verify that both vCenter 5.5 & ESXi 5.5 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere55 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 5.5 & ESXi 5.5 not found." -foregroundcolor "cyan"
|
||||
$vSphere55 = $false
|
||||
}
|
||||
if ($vCenter60 -and $ESXi60) {
|
||||
Write-Host "vCenter 6.0 & ESXi 6.0 found." -foregroundcolor "green"
|
||||
$vSphere60 = $true
|
||||
} elseif ($vCenter60 -or $ESXi60) {
|
||||
Write-Host "vSphere 6.0 installation requirements not met. Please verify that both vCenter 6.0 & ESXi 6.0 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere60 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 6.0 & ESXi 6.0 not found." -foregroundcolor "cyan"
|
||||
$vSphere60 = $false
|
||||
}
|
||||
if ($vCenter65 -and $ESXi65) {
|
||||
Write-Host "vCenter 6.5 & ESXi 6.5 found." -foregroundcolor "green"
|
||||
$vSphere65 = $true
|
||||
} elseif ($vCenter65 -or $ESXi65) {
|
||||
Write-Host "vSphere 6.5 installation requirements not met. Please verify that both vCenter 6.5 & ESXi 6.5 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere65 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 6.5 & ESXi 6.5 not found." -foregroundcolor "cyan"
|
||||
$vSphere65 = $false
|
||||
}
|
||||
if ($vCenter67 -and $ESXi67) {
|
||||
Write-Host "vCenter 6.7 & ESXi 6.7 found." -foregroundcolor "green"
|
||||
$vSphere67 = $true
|
||||
} elseif ($vCenter67 -or $ESXi67) {
|
||||
Write-Host "vSphere 6.7 installation requirements not met. Please verify that both vCenter 6.7 & ESXi 6.7 exist on Build share." -foregroundcolor "red"
|
||||
$vSphere67 = $false
|
||||
} else {
|
||||
Write-Host "vCenter 6.7 & ESXi 6.7 not found." -foregroundcolor "cyan"
|
||||
$vSphere67 = $false
|
||||
}
|
||||
if (!($vSphere41 -or $vSphere50 -or $vSphere51 -or $vSphere55 -or $vSphere60 -or $vSphere65 -or $vSphere67)) {
|
||||
Write-Host "Matching vCenter & ESXi distributions not found. Please check the Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
Check-File "\\192.168.199.7\Build\VMware-PowerCLI*.exe" "PowerCLI installer"
|
||||
If ((!(Test-Path "\\192.168.199.7\Build\VMware-PowerCLI*.exe")) -and (!($Auto))) {
|
||||
If ((Read-Host "Would you like to go to the PowerCLI download site (y/n)?") -like "y") {
|
||||
$IE=new-object -com internetexplorer.application
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62) {$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI600R1")}
|
||||
if ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -le 62) {$IE.navigate2("https://my.vmware.com/group/vmware/get-download?downloadGroup=PCLI58R1")}
|
||||
$IE.visible=$true
|
||||
} Else {
|
||||
Write-Host "OK, but the VC build will not work correctly without PowerCLI"
|
||||
}
|
||||
}
|
||||
if (Test-Path "b:\VMware-PowerCLI-5*.exe") {
|
||||
If (($vSphere50 -and ((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.0*"}) -eq $Null))) {Write-Host "vSphere 5.0 found, matching PowerCLI version missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
If (($vSphere51 -and ((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.1*"}) -eq $Null))) {Write-Host "vSphere 5.1 found, matching PowerCLI version missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
If (($vSphere55 -and (((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.5*"}) -eq $Null) -and ((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.8*"}) -eq $Null)))) {Write-Host "vSphere 5.5 found, matching PowerCLI version missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
If (($vSphere60 -and (((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.8*"}) -eq $Null) -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -le 62)))) {Write-Host "vSphere 6.0 on Windows 2008 found, matching PowerCLI version 5.8 missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
If (($vSphere60 -and (((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "6*"}) -eq $Null) -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)))) {Write-Host "vSphere 6.0 on Windows 2012 found, matching PowerCLI version 6 missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
}
|
||||
Check-OptionalFile "\\192.168.199.7\Build\Win2K3.iso" "Windows Server 2003 ISO"
|
||||
Check-OptionalFile "\\192.168.199.7\Build\WinXP.iso" "Windows XP ISO"
|
||||
}
|
||||
if (Test-Path "b:\VMware-PowerCLI-5*.exe") {
|
||||
If (($vSphere50 -and ((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.0*"}) -eq $Null))) {Write-Host "vSphere 5.0 found, matching PowerCLI version missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
If (($vSphere51 -and ((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.1*"}) -eq $Null))) {Write-Host "vSphere 5.1 found, matching PowerCLI version missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
If (($vSphere55 -and (((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.5*"}) -eq $Null) -and ((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.8*"}) -eq $Null)))) {Write-Host "vSphere 5.5 found, matching PowerCLI version missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
If (($vSphere60 -and (((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "5.8*"}) -eq $Null) -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -le 62)))) {Write-Host "vSphere 6.0 on Windows 2008 found, matching PowerCLI version 5.8 missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
If (($vSphere60 -and (((Get-ChildItem B:\VMware-PowerCLI-*.exe | where {$_.VersionInfo.ProductVersion -like "6*"}) -eq $Null) -and ((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)))) {Write-Host "vSphere 6.0 on Windows 2012 found, matching PowerCLI version 6 missing. Please check the Build share." -foregroundcolor "Yellow"}
|
||||
}
|
||||
Check-OptionalFile "\\192.168.199.7\Build\Win2K3.iso" "Windows Server 2003 ISO"
|
||||
Check-OptionalFile "\\192.168.199.7\Build\WinXP.iso" "Windows XP ISO"
|
||||
Write-Host "Validate SQL & TFTP Install" -foregroundcolor "cyan"
|
||||
if (Test-Path -LiteralPath "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\") {
|
||||
Check-File "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\vCenter.mdf" "vCenter Database"
|
||||
|
@ -185,61 +219,71 @@ if ($CompName -eq "DC") {
|
|||
Check-File "C:\Program Files\Tftpd64_SE\Tftpd64_SVC.exe" "TFTP Server"
|
||||
Check-File "C:\TFTP-Root\pxelinux.0" "PXE boot file"
|
||||
Check-File "C:\TFTP-Root\pxelinux.cfg" "PXE boot configuration file"
|
||||
if ($ESX41 -and (Test-Path "C:\TFTP-Root\ESX41\*")) {
|
||||
Write-Host "ESX 4.1 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESX41 -and !(Test-Path "C:\TFTP-Root\ESX41\*")) {
|
||||
Write-Host "ESX 4.1 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi41 -and (Test-Path "C:\TFTP-Root\ESXi41\*")) {
|
||||
Write-Host "ESXi 4.1 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi41 -and !(Test-Path "C:\TFTP-Root\ESXi41\*")) {
|
||||
Write-Host "ESXi 4.1 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi50 -and (Test-Path "C:\TFTP-Root\ESXi50\*")) {
|
||||
Write-Host "ESXi 5.0 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi50 -and !(Test-Path "C:\TFTP-Root\ESXi50\*")) {
|
||||
Write-Host "ESXi 5.0 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi51 -and (Test-Path "C:\TFTP-Root\ESXi51\*")) {
|
||||
Write-Host "ESXi 5.1 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi51 -and !(Test-Path "C:\TFTP-Root\ESXi51\*")) {
|
||||
Write-Host "ESXi 5.1 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi55 -and (Test-Path "C:\TFTP-Root\ESXi515\*")) {
|
||||
Write-Host "ESXi 5.5 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi55 -and !(Test-Path "C:\TFTP-Root\ESXi55\*")) {
|
||||
Write-Host "ESXi 5.5 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi60 -and (Test-Path "C:\TFTP-Root\ESXi60\*")) {
|
||||
Write-Host "ESXi 6.0 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi60 -and !(Test-Path "C:\TFTP-Root\ESXi60\*")) {
|
||||
Write-Host "ESXi 6.0 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($BDrive) {
|
||||
if ($ESX41 -and (Test-Path "C:\TFTP-Root\ESX41\*")) {
|
||||
Write-Host "ESX 4.1 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESX41 -and !(Test-Path "C:\TFTP-Root\ESX41\*")) {
|
||||
Write-Host "ESX 4.1 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi41 -and (Test-Path "C:\TFTP-Root\ESXi41\*")) {
|
||||
Write-Host "ESXi 4.1 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi41 -and !(Test-Path "C:\TFTP-Root\ESXi41\*")) {
|
||||
Write-Host "ESXi 4.1 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi50 -and (Test-Path "C:\TFTP-Root\ESXi50\*")) {
|
||||
Write-Host "ESXi 5.0 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi50 -and !(Test-Path "C:\TFTP-Root\ESXi50\*")) {
|
||||
Write-Host "ESXi 5.0 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi51 -and (Test-Path "C:\TFTP-Root\ESXi51\*")) {
|
||||
Write-Host "ESXi 5.1 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi51 -and !(Test-Path "C:\TFTP-Root\ESXi51\*")) {
|
||||
Write-Host "ESXi 5.1 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi55 -and (Test-Path "C:\TFTP-Root\ESXi515\*")) {
|
||||
Write-Host "ESXi 5.5 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi55 -and !(Test-Path "C:\TFTP-Root\ESXi55\*")) {
|
||||
Write-Host "ESXi 5.5 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
if ($ESXi60 -and (Test-Path "C:\TFTP-Root\ESXi60\*")) {
|
||||
Write-Host "ESXi 6.0 TFTP files found." -foregroundcolor "green"
|
||||
} elseif ($ESXi60 -and !(Test-Path "C:\TFTP-Root\ESXi60\*")) {
|
||||
Write-Host "ESXi 6.0 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
|
||||
$vcinstall = ((Select-String -SimpleMatch "VCInstall=" -Path "B:\Automate\automate.ini").line).substring(10)
|
||||
If ($vcinstall -eq "50") {$vcinstall = "5"}
|
||||
If (!($vSphere50) -and ($vcinstall -eq "5")) {
|
||||
Write-Host "You wish to install vSphere 5.0 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
$vcinstall = ((Select-String -SimpleMatch "VCInstall=" -Path "B:\Automate\automate.ini").line).substring(10)
|
||||
If ($vcinstall -eq "50") {$vcinstall = "5"}
|
||||
If (!($vSphere50) -and ($vcinstall -eq "5")) {
|
||||
Write-Host "You wish to install vSphere 5.0 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
If (!($vSphere51) -and ($vcinstall -eq "51")) {
|
||||
Write-Host "You wish to install vSphere 5.1 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
If (!($vSphere55) -and ($vcinstall -eq "55")) {
|
||||
Write-Host "You wish to install vSphere 5.5 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
If (!($vSphere60) -and ($vcinstall -eq "60")) {
|
||||
Write-Host "You wish to install vSphere 6.0 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
If (!($vSphere65) -and ($vcinstall -eq "65")) {
|
||||
Write-Host "You wish to install vSphere 6.5 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
If (!($vSphere67) -and ($vcinstall -eq "67")) {
|
||||
Write-Host "You wish to install vSphere 6.7 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
}
|
||||
If (!($vSphere51) -and ($vcinstall -eq "51")) {
|
||||
Write-Host "You wish to install vSphere 5.1 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
If (!($vSphere55) -and ($vcinstall -eq "55")) {
|
||||
Write-Host "You wish to install vSphere 5.5 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
If (!($vSphere60) -and ($vcinstall -eq "60")) {
|
||||
Write-Host "You wish to install vSphere 6.0 but the installers aren't on the build share" -foregroundcolor "red"
|
||||
$Global:Pass = $false
|
||||
}
|
||||
Write-Host "Check Domain" -foregroundcolor "cyan"
|
||||
$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
|
||||
if ($domain.Name -eq "lab.local") {
|
||||
|
@ -256,7 +300,7 @@ if ($CompName -eq "DC") {
|
|||
Check-ServiceRunning "Tftpd32_svc"
|
||||
Check-ServiceRunning "SQL Server (SQLEXPRESS)"
|
||||
Check-ServiceRunning "SQLBrowser"
|
||||
If ((Get-VMPlatform) -eq "VMware") {Check-ServiceRunning "VMTools"}
|
||||
If (((Get-VMPlatform) -eq "VMware") -and (!($Auto))) {Check-ServiceRunning "VMTools"}
|
||||
Write-Host "Check DNS" -foregroundcolor "cyan"
|
||||
Check-DNSRecord ("dc.lab.local")
|
||||
Check-DNSRecord ("vc.lab.local")
|
||||
|
@ -277,13 +321,13 @@ if ($CompName -eq "DC") {
|
|||
if ($CompName -eq "VC") {
|
||||
$HaveXP = test-Path("\\192.168.199.7\Build\WinXP.iso")
|
||||
$Have2K3 = test-Path("\\192.168.199.7\Build\Win2K3.iso")
|
||||
If ((Get-VMPlatform) -eq "VMware") {Check-ServiceRunning "VMTools"}
|
||||
If (((Get-VMPlatform) -eq "VMware") -and (!($Auto))) {Check-ServiceRunning "VMTools"}
|
||||
$VCPath = "None"
|
||||
If (Test-path "C:\ProgramData\VMware\VMware VirtualCenter") {
|
||||
$VCPath = "C:\ProgramData\VMware\VMware VirtualCenter"
|
||||
$VCVer = (Get-ItemProperty -Path "HKLM:\SOFTWARE\VMware, Inc.\VMware VirtualCenter").InstalledVersion
|
||||
$VCVer = (Get-ItemProperty -Path "HKLM:\SOFTWARE\VMware, Inc.\VMware VirtualCenter" -ErrorAction SilentlyContinue).InstalledVersion
|
||||
}
|
||||
If (Test-path "C:\ProgramData\VMware\vCenterServer") {
|
||||
If (Test-path "C:\ProgramData\VMware\vCenterServer") {
|
||||
$VCPath = "C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx"
|
||||
$VCVer = (Get-ItemProperty -Path "HKLM:\SOFTWARE\VMware, Inc.\vCenter Server").ProductVersion
|
||||
}
|
||||
|
@ -305,15 +349,27 @@ if ($CompName -eq "VC") {
|
|||
Check-ServiceRunning "VMware VirtualCenter Management Webservices"
|
||||
Check-ServiceRunning "VMware VirtualCenter Server"
|
||||
}
|
||||
if ($VCVer.StartsWith("6")) {
|
||||
if ($VCVer.StartsWith("6.0")) {
|
||||
if ((((Select-String -SimpleMatch "DeployVUM=" -Path "B:\Automate\automate.ini").line).substring(10)) -like "true") {Check-ServiceRunning "VMware vSphere Update Manager Service"}
|
||||
Check-ServiceRunning "VMware VirtualCenter Server"
|
||||
Check-ServiceRunning "VMware vSphere Web Client"
|
||||
Check-ServiceRunning "VMware Directory Service"
|
||||
Check-ServiceRunning "VMware vSphere Profile-Driven Storage Service"
|
||||
}
|
||||
if ($VCVer.StartsWith("6.5")) {
|
||||
Check-ServiceRunning "VMWareDirectoryService"
|
||||
Check-ServiceRunning "VMwareDNSService"
|
||||
Check-ServiceRunning "VMwareIdentityMgmtService"
|
||||
Check-ServiceRunning "VMwareSTS"
|
||||
Check-ServiceRunning "vmware-psc-client"
|
||||
}
|
||||
if ($VCVer.StartsWith("6.7")) {
|
||||
Check-ServiceRunning "VMWareDirectoryService"
|
||||
Check-ServiceRunning "VMwareDNSService"
|
||||
Check-ServiceRunning "VMwareIdentityMgmtService"
|
||||
Check-ServiceRunning "VMwareSTS"
|
||||
}
|
||||
}
|
||||
|
||||
} Else {
|
||||
Write-Host "vCenter is not installed" -foregroundcolor "Yellow"
|
||||
}
|
||||
|
@ -338,7 +394,7 @@ if ($CompName -eq "DC2") {
|
|||
Check-ServiceRunning "Netlogon"
|
||||
Check-ServiceRunning "SQL Server (SQLEXPRESS)"
|
||||
Check-ServiceRunning "SQLBrowser"
|
||||
If ((Get-VMPlatform) -eq "VMware") {Check-ServiceRunning "VMTools"}
|
||||
If (((Get-VMPlatform) -eq "VMware") -and (!($Auto))) {Check-ServiceRunning "VMTools"}
|
||||
Write-Host "Check DNS" -foregroundcolor "cyan"
|
||||
Check-DNSRecord ("dc.lab.local")
|
||||
Check-DNSRecord ("vc.lab.local")
|
||||
|
@ -358,7 +414,7 @@ if ($CompName -eq "DC2") {
|
|||
}
|
||||
if ($CompName -eq "VC2") {
|
||||
|
||||
If ((Get-VMPlatform) -eq "VMware") {Check-ServiceRunning "VMTools"}
|
||||
If (((Get-VMPlatform) -eq "VMware") -and (!($Auto))) {Check-ServiceRunning "VMTools"}
|
||||
If (Test-path "C:\ProgramData\VMware\VMware VirtualCenter") {
|
||||
Write-Host "Check Services" -foregroundcolor "cyan"
|
||||
Check-ServiceRunning "VMware VirtualCenter Management Webservices"
|
||||
|
@ -368,7 +424,10 @@ if ($CompName -eq "VC2") {
|
|||
Write-Host "vCenter is not installed" -foregroundcolor "Yellow"
|
||||
}
|
||||
}
|
||||
|
||||
if (($CompName -eq "CS1") -or ($CompName -eq "CS2") -or ($CompName -eq "SS")) {
|
||||
Check-ServiceRunning "wsbroker"
|
||||
Check-ServiceRunning "PCOIPSG"
|
||||
}
|
||||
Write-Host "The final result" -foregroundcolor "cyan"
|
||||
if ($Global:Pass -eq $false ) {
|
||||
Write-Host ("*****************************************") -foregroundcolor "red"
|
||||
|
@ -387,4 +446,4 @@ if ($Global:Pass -eq $false ) {
|
|||
Write-Host ("*") -foregroundcolor "green"
|
||||
Write-Host ("**************************************") -foregroundcolor "green"
|
||||
}
|
||||
Read-host " Press <Enter> to exit"
|
||||
If (!($Auto)) {Read-host " Press <Enter> to exit"}
|
|
@ -1,7 +1,7 @@
|
|||
**
|
||||
* Autolab V2.6
|
||||
* Autolab V3.0
|
||||
**
|
||||
* Released April 2015
|
||||
* Released June 2018
|
||||
**
|
||||
* New versions and updates at www.labguides.com
|
||||
**
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,19 @@
|
|||
Write-Host "Loading PowerCLI, this may take a little while." -foregroundcolor "cyan"
|
||||
if (((Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq $null) -and ((Get-PSSnapin -Registered).name -contains "ware")) {
|
||||
Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue
|
||||
} else {
|
||||
$moduleList = @( "VMware.VimAutomation.Core", "VMware.VimAutomation.Vds", "VMware.VimAutomation.Cis.Core", "VMware.VimAutomation.Storage", "VMware.VimAutomation.HorizonView","VMware.VimAutomation.HA", "VMware.VimAutomation.vROps", "VMware.VumAutomation", "VMware.DeployAutomation", "VMware.ImageBuilder", "VMware.VimAutomation.License")
|
||||
$loaded = Get-Module -Name $moduleList -ErrorAction Ignore | % {$_.Name}
|
||||
$registered = Get-Module -Name $moduleList -ListAvailable -ErrorAction Ignore | % {$_.Name}
|
||||
$notLoaded = $registered | ? {$loaded -notcontains $_}
|
||||
foreach ($module in $registered) {
|
||||
if ($loaded -notcontains $module) {
|
||||
Import-Module $module
|
||||
}
|
||||
}
|
||||
}
|
||||
$PCLIVer = Get-PowerCLIVersion
|
||||
if ((($PCLIVer.Major * 10 ) + $PCLIVer.Minor) -ge 51) {
|
||||
$null = Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -confirm:$false -Scope "Session"
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
TZ=New Zealand Standard Time
|
||||
|
||||
VCInstall=60
|
||||
VCInstallOptions=4,5,51,55,60,None,Base
|
||||
VCInstallOptions=4,5,51,55,60,65,67,None,Base
|
||||
AutoAddHosts=false
|
||||
DeployVUM=true
|
||||
Adminpwd=VMware1!
|
||||
|
@ -12,7 +12,7 @@ BuildVM=true
|
|||
ProductKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
|
||||
|
||||
ViewInstall=None
|
||||
ViewInstallOptions=50,51,52,53,60,None
|
||||
ViewInstallOptions=50,51,52,53,60,70,None
|
||||
BuildViewVM=true
|
||||
ViewVMProductKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
|
||||
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
Version xx
|
||||
Version 3.0
|
||||
- Support for vSphere 6.5 & 6.7
|
||||
- Support for Windows Server 2016
|
||||
- Removed support for Windows Server 2008
|
||||
- Added Email notification for VC & DC build. Specify destination address & SMTP server in autolmate.ini
|
||||
- Changed router to pfSense
|
||||
- Updated NAS to FreeNAS 11.1
|
||||
- Support for View 7.5
|
||||
- Nested 2008, 2016, Windows 7, Windows 8, & Windows 10 VMs
|
||||
|
||||
Version 2.6
|
||||
- Support for vSphere 6.0
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
To have gParted addedto PXE menu place teh following fiels here before the DC build
|
||||
To have gParted addedto PXE menu place the following files here before the DC build
|
||||
|
||||
filesystem.squashfs
|
||||
initrd.img
|
||||
|
|
Binary file not shown.
|
@ -18,7 +18,7 @@
|
|||
<InstallFrom>
|
||||
<MetaData wcm:action="add">
|
||||
<Key>/IMAGE/INDEX</Key>
|
||||
<Value>1</Value>
|
||||
<Value>2</Value>
|
||||
</MetaData>
|
||||
</InstallFrom>
|
||||
</OSImage>
|
||||
|
@ -134,9 +134,21 @@
|
|||
<FirstLogonCommands>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>a:\Build.cmd</CommandLine>
|
||||
<Description>Build</Description>
|
||||
<Description>Phase One Installer from A Drive</Description>
|
||||
<Order>1</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>D:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from D Drive</Description>
|
||||
<Order>2</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>E:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from E Drive</Description>
|
||||
<Order>3</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
</component>
|
||||
|
|
|
@ -6,27 +6,22 @@ ver | find "6.2" > nul
|
|||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "6.3" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "10.0" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K16
|
||||
goto RunBuild
|
||||
:ver_2K8
|
||||
goto RunBuild
|
||||
:ver_2K12
|
||||
:ver_2K16
|
||||
netsh interface ip set address name="Ethernet" static 192.168.199.33 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set address name="Ethernet0" static 192.168.199.33 255.255.255.0 192.168.199.2 1
|
||||
ping 192.168.199.2
|
||||
netsh interface ip set dnsservers name="Ethernet" static address=192.168.199.4 primary
|
||||
netsh interface ip set dnsservers name="Ethernet0" static address=192.168.199.4 primary
|
||||
Dism /online /enable-feature /featurename:NetFx3ServerFeatures
|
||||
Dism /online /enable-feature /featurename:NetFx3 /source:D:\Sources\sxs
|
||||
copy \\192.168.199.7\Build\Automate\DC\ocsetup.exe c:\windows\system32\
|
||||
echo * Mount Install Image
|
||||
echo * Mount Install Image >> c:\buildlog.txt
|
||||
mkdir c:\mountdir
|
||||
Dism /mount-wim /WimFile:D:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
echo * Setup recall of build script
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\build.cmd" /f >> c:\buildlog.txt
|
||||
echo * Install GUI onto Server Core
|
||||
echo * Install GUI onto Server Core >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:server-gui-shell /all /source:c:\mountdir\windows\winsxs /quiet
|
||||
pause
|
||||
|
||||
goto RunBuild
|
||||
:RunBuild
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
|
|
Binary file not shown.
|
@ -18,7 +18,7 @@
|
|||
<InstallFrom>
|
||||
<MetaData wcm:action="add">
|
||||
<Key>/IMAGE/INDEX</Key>
|
||||
<Value>1</Value>
|
||||
<Value>2</Value>
|
||||
</MetaData>
|
||||
</InstallFrom>
|
||||
</OSImage>
|
||||
|
@ -130,10 +130,22 @@
|
|||
</UserAccounts>
|
||||
<FirstLogonCommands>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>a:\Build.cmd</CommandLine>
|
||||
<Description>Build</Description>
|
||||
<CommandLine>A:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from A Drive</Description>
|
||||
<Order>1</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>D:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from D Drive</Description>
|
||||
<Order>2</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>E:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from E Drive</Description>
|
||||
<Order>3</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
</component>
|
||||
|
|
|
@ -6,27 +6,21 @@ ver | find "6.2" > nul
|
|||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "6.3" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "10.0" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K16
|
||||
goto RunBuild
|
||||
:ver_2K8
|
||||
goto RunBuild
|
||||
:ver_2K12
|
||||
:ver_2K16
|
||||
netsh interface ip set address name="Ethernet" static 192.168.199.34 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set address name="Ethernet0" static 192.168.199.34 255.255.255.0 192.168.199.2 1
|
||||
ping 192.168.199.2
|
||||
netsh interface ip set dnsservers name="Ethernet" static address=192.168.199.4 primary
|
||||
netsh interface ip set dnsservers name="Ethernet0" static address=192.168.199.4 primary
|
||||
Dism /online /enable-feature /featurename:NetFx3ServerFeatures
|
||||
Dism /online /enable-feature /featurename:NetFx3 /source:D:\Sources\sxs
|
||||
copy \\192.168.199.7\Build\Automate\DC\ocsetup.exe c:\windows\system32\
|
||||
echo * Mount Install Image
|
||||
echo * Mount Install Image >> c:\buildlog.txt
|
||||
mkdir c:\mountdir
|
||||
Dism /mount-wim /WimFile:D:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
echo * Setup recall of build script
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\build.cmd" /f >> c:\buildlog.txt
|
||||
echo * Install GUI onto Server Core
|
||||
echo * Install GUI onto Server Core >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:server-gui-shell /all /source:c:\mountdir\windows\winsxs /quiet
|
||||
pause
|
||||
goto RunBuild
|
||||
:RunBuild
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
|
|
|
@ -5,49 +5,65 @@ ver | find "6.2" > nul
|
|||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "6.3" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "10." > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K16
|
||||
Exit
|
||||
:ver_2K8
|
||||
echo **
|
||||
echo * Building on Windows 2008 R2
|
||||
echo * Building on Windows 2008 R2 >> c:\buildlog.txt
|
||||
echo * Building on Windows 2008 core
|
||||
echo * Building on Windows 2008 core >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:NetFx2-ServerCore >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:NetFx3-ServerCore >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:NetFx2-ServerCore-WOW64 >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:NetFx3-ServerCore-WOW64 >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:MicrosoftWindowsPowerShell >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:MicrosoftWindowsPowerShell-WOW64 >> c:\buildlog.txt
|
||||
echo * Set IP address
|
||||
echo * Set IP address >> c:\buildlog.txt
|
||||
netsh interface ip set address "Ethernet" static 192.168.199.4 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set address "Ethernet0" static 192.168.199.4 255.255.255.0 192.168.199.2 1
|
||||
ping 192.168.199.2
|
||||
netsh interface ip set dnsservers "Ethernet" static 192.168.199.4 primary
|
||||
netsh interface ip set dnsservers "Ethernet0" static 192.168.199.4 primary
|
||||
ping 192.168.199.7 >> c:\buildlog.txt
|
||||
echo * Setup recall of build script
|
||||
echo * Setup recall of build script >> c:\buildlog.txt
|
||||
copy \\192.168.199.7\Build\Automate\DC\Phase2.cmd c:\ >> c:\buildlog.txt
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
echo **
|
||||
echo * Install DHCP
|
||||
echo * Install DHCP >> c:\buildlog.txt
|
||||
start /w ocsetup DHCPServer
|
||||
echo * Enable DHCP
|
||||
echo * Enable DHCP >> c:\buildlog.txt
|
||||
sc config dhcpserver start= auto
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Phase2.cmd" /f >> c:\buildlog.txt
|
||||
echo **
|
||||
echo * Install Active Directory and reboot
|
||||
copy \\192.168.199.7\Build\Automate\DC\dcpromo.txt c:\ >> c:\buildlog.txt
|
||||
dcpromo /answer:c:\dcpromo.txt >> c:\buildlog.txt
|
||||
Exit
|
||||
echo * Promote to DC
|
||||
echo * Promote to DC >> c:\buildlog.txt
|
||||
copy \\192.168.199.7\Build\Automate\DC\dcpromo.txt c:\dcpromo.txt >> c:\buildlog.txt
|
||||
dcpromo /answer:c:\dcpromo.txt >> c:\buildlog.txt
|
||||
exit
|
||||
:ver_2K12
|
||||
echo **
|
||||
echo * Building on Windows 2012 R2
|
||||
echo * Building on Windows 2012 R2 >> c:\buildlog.txt
|
||||
goto startBuild
|
||||
:ver_2K16
|
||||
echo **
|
||||
echo * Building on Windows 2016
|
||||
echo * Building on Windows 2016 >> c:\buildlog.txt
|
||||
goto startBuild
|
||||
:startBuild
|
||||
echo * Set IP address
|
||||
echo * Set IP address >> c:\buildlog.txt
|
||||
netsh interface ip set address "Ethernet" static 192.168.199.4 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set address "Ethernet0" static 192.168.199.4 255.255.255.0 192.168.199.2 1
|
||||
ping 192.168.199.2
|
||||
netsh interface ip set dnsservers "Ethernet" static 192.168.199.4 primary
|
||||
echo **
|
||||
echo * Mount Install Image
|
||||
echo * Mount Install Image >> c:\buildlog.txt
|
||||
mkdir c:\mountdir
|
||||
If Exist D:\sources\install.wim Dism /mount-wim /WimFile:D:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
If Exist E:\sources\install.wim Dism /mount-wim /WimFile:E:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
netsh interface ip set dnsservers "Ethernet0" static 192.168.199.4 primary
|
||||
ping 192.168.199.7 >> c:\buildlog.txt
|
||||
echo * Setup recall of build script
|
||||
echo * Setup recall of build script >> c:\buildlog.txt
|
||||
copy \\192.168.199.7\Build\Automate\DC\Phase2.cmd c:\ >> c:\buildlog.txt
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Phase2.cmd" /f >> c:\buildlog.txt
|
||||
echo * Install GUI onto Server Core
|
||||
echo * Install GUI onto Server Core >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:server-gui-mgmt /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
Dism /online /enable-feature /featurename:server-gui-shell /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
Dism /online /enable-feature /featurename:servercore-fullserver /all /source:c:\mountdir\windows\winsxs /quiet
|
||||
#echo * Promote to DC
|
||||
#echo * Promote to DC >> c:\buildlog.txt
|
||||
#copy \\192.168.199.7\Build\Automate\DC\dcpromo.ps1 c:\
|
||||
#pause
|
||||
#powershell c:\dcpromo.ps1
|
||||
#pause Installing AD, will reboot after
|
||||
Exit
|
Binary file not shown.
|
@ -1,53 +0,0 @@
|
|||
@echo off
|
||||
ver | find "6.1" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K8
|
||||
ver | find "6.2" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "6.3" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
Exit
|
||||
:ver_2K8
|
||||
echo **
|
||||
echo * Building on Windows 2008 R2
|
||||
echo * Building on Windows 2008 R2 >> c:\buildlog.txt
|
||||
echo * Setup recall of build script
|
||||
echo * Setup recall of build script >> c:\buildlog.txt
|
||||
copy \\192.168.199.7\Build\Automate\DC\Phase2.cmd c:\ >> c:\buildlog.txt
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
echo **
|
||||
echo * Install DHCP
|
||||
echo * Install DHCP >> c:\buildlog.txt
|
||||
start /w ocsetup DHCPServer
|
||||
echo * Enable DHCP
|
||||
echo * Enable DHCP >> c:\buildlog.txt
|
||||
sc config dhcpserver start= auto
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Phase2.cmd" /f >> c:\buildlog.txt
|
||||
echo **
|
||||
echo * Install Active Directory and reboot
|
||||
copy \\192.168.199.7\Build\Automate\DC\dcpromo.txt c:\ >> c:\buildlog.txt
|
||||
dcpromo /answer:c:\dcpromo.txt >> c:\buildlog.txt
|
||||
Exit
|
||||
:ver_2K12
|
||||
echo **
|
||||
echo * Building on Windows 2012 R2
|
||||
echo * Building on Windows 2012 R2 >> c:\buildlog.txt
|
||||
echo * Set IP address
|
||||
echo * Set IP address >> c:\buildlog.txt
|
||||
netsh interface ip set address "Ethernet" static 192.168.199.4 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set dnsservers "Ethernet" static 192.168.199.4 primary
|
||||
echo **
|
||||
echo * Mount Install Image
|
||||
echo * Mount Install Image >> c:\buildlog.txt
|
||||
mkdir c:\mountdir
|
||||
If Exist D:\sources\install.wim Dism /mount-wim /WimFile:D:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
If Exist E:\sources\install.wim Dism /mount-wim /WimFile:E:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
echo * Setup recall of build script
|
||||
copy \\192.168.199.7\Build\Automate\DC\Phase2.cmd c:\ >> c:\buildlog.txt
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\Phase2.cmd" /f >> c:\buildlog.txt
|
||||
echo * Install GUI onto Server Core
|
||||
echo * Install GUI onto Server Core >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:server-gui-mgmt /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
Dism /online /enable-feature /featurename:server-gui-shell /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
Dism /online /enable-feature /featurename:servercore-fullserver /all /source:c:\mountdir\windows\winsxs /quiet
|
||||
Exit
|
Binary file not shown.
Binary file not shown.
|
@ -18,7 +18,7 @@
|
|||
<InstallFrom>
|
||||
<MetaData wcm:action="add">
|
||||
<Key>/IMAGE/INDEX</Key>
|
||||
<Value>1</Value>
|
||||
<Value>2</Value>
|
||||
</MetaData>
|
||||
</InstallFrom>
|
||||
</OSImage>
|
||||
|
@ -107,13 +107,13 @@
|
|||
<Order>1</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>D:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from D Drive</Description>
|
||||
<Order>2</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>E:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from E Drive</Description>
|
||||
<Order>3</Order>
|
||||
|
|
BIN
SRC/DC2.flp
BIN
SRC/DC2.flp
Binary file not shown.
|
@ -1,12 +0,0 @@
|
|||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VMware, Inc.\VMnetLib\VMnetConfig\vmnet3]
|
||||
"IPSubnetAddress"="192.168.199.0"
|
||||
"IPSubnetMask"="255.255.255.0"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VMware, Inc.\VMnetLib\VMnetConfig\vmnet3\Adapter]
|
||||
"UseAdapter"=dword:00000001
|
||||
"AdapterInstalled"=dword:00000001
|
||||
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VMware, Inc.\VMnetLib\VMnetConfig\vmnet3\DHCP]
|
||||
"UseDHCP"=dword:00000001
|
|
@ -0,0 +1,8 @@
|
|||
@echo off
|
||||
echo **
|
||||
echo * Building on Windows 10
|
||||
echo * Building on Windows 10 >> c:\buildlog.txt
|
||||
cscript //B "%windir%\system32\slmgr.vbs" /ato
|
||||
\\192.168.199.7\build\VMTools\setup64.exe /s /v "/qn"
|
||||
pause
|
||||
Exit
|
Binary file not shown.
|
@ -18,7 +18,7 @@
|
|||
<InstallFrom>
|
||||
<MetaData wcm:action="add">
|
||||
<Key>/IMAGE/INDEX</Key>
|
||||
<Value>2</Value>
|
||||
<Value>1</Value>
|
||||
</MetaData>
|
||||
</InstallFrom>
|
||||
</OSImage>
|
||||
|
@ -45,39 +45,13 @@
|
|||
</settings>
|
||||
<settings pass="specialize">
|
||||
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<ComputerName>dc</ComputerName>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-TCPIP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Interfaces>
|
||||
<Interface wcm:action="add">
|
||||
<Ipv4Settings>
|
||||
<DhcpEnabled>false</DhcpEnabled>
|
||||
<Metric>10</Metric>
|
||||
<RouterDiscoveryEnabled>false</RouterDiscoveryEnabled>
|
||||
</Ipv4Settings>
|
||||
<UnicastIpAddresses>
|
||||
<IpAddress wcm:action="add" wcm:keyValue="1">192.168.199.4/24</IpAddress>
|
||||
</UnicastIpAddresses>
|
||||
<Identifier>Local Area Connection</Identifier>
|
||||
<Routes>
|
||||
<Route wcm:action="add">
|
||||
<Identifier>0</Identifier>
|
||||
<Metric>10</Metric>
|
||||
<NextHopAddress>192.168.199.2</NextHopAddress>
|
||||
<Prefix>0.0.0.0/0</Prefix>
|
||||
</Route>
|
||||
</Routes>
|
||||
</Interface>
|
||||
</Interfaces>
|
||||
<ComputerName>Template10</ComputerName>
|
||||
</component>
|
||||
<component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DomainProfile_EnableFirewall>false</DomainProfile_EnableFirewall>
|
||||
<PrivateProfile_EnableFirewall>false</PrivateProfile_EnableFirewall>
|
||||
<PublicProfile_EnableFirewall>false</PublicProfile_EnableFirewall>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon>
|
||||
</component>
|
||||
|
@ -88,6 +62,16 @@
|
|||
<IEHardenUser>false</IEHardenUser>
|
||||
<IEHardenAdmin>false</IEHardenAdmin>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-TCPIP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Interfaces>
|
||||
<Interface wcm:action="add">
|
||||
<Ipv4Settings>
|
||||
<DhcpEnabled>true</DhcpEnabled>
|
||||
</Ipv4Settings>
|
||||
<Identifier>1</Identifier>
|
||||
</Interface>
|
||||
</Interfaces>
|
||||
</component>
|
||||
</settings>
|
||||
<settings pass="oobeSystem">
|
||||
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
@ -102,48 +86,31 @@
|
|||
</AutoLogon>
|
||||
<FirstLogonCommands>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>A:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from A Drive</Description>
|
||||
<CommandLine>a:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer</Description>
|
||||
<Order>1</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>D:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from D Drive</Description>
|
||||
<Order>2</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>E:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from E Drive</Description>
|
||||
<Order>3</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
<OOBE>
|
||||
<HideEULAPage>true</HideEULAPage>
|
||||
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
|
||||
<NetworkLocation>Work</NetworkLocation>
|
||||
<SkipMachineOOBE>true</SkipMachineOOBE>
|
||||
<SkipUserOOBE>true</SkipUserOOBE>
|
||||
<HideLocalAccountScreen>true</HideLocalAccountScreen>
|
||||
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
|
||||
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
|
||||
<UnattendEnableRetailDemo>false</UnattendEnableRetailDemo>
|
||||
<ProtectYourPC>1</ProtectYourPC>
|
||||
</OOBE>
|
||||
<UserAccounts>
|
||||
<AdministratorPassword>
|
||||
<Value>VgBNAHcAYQByAGUAMQAhAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAUABhAHMAcwB3AG8AcgBkAA==</Value>
|
||||
<PlainText>false</PlainText>
|
||||
</AdministratorPassword>
|
||||
<LocalAccounts>
|
||||
<LocalAccount wcm:action="add">
|
||||
<Password>
|
||||
<Value>VgBNAHcAYQByAGUAMQAhAFAAYQBzAHMAdwBvAHIAZAA=</Value>
|
||||
<PlainText>false</PlainText>
|
||||
</Password>
|
||||
<Description>vSphere Administrator</Description>
|
||||
<DisplayName>VI Admin</DisplayName>
|
||||
<Group>Administrators</Group>
|
||||
<Name>vi-admin</Name>
|
||||
</LocalAccount>
|
||||
</LocalAccounts>
|
||||
</UserAccounts>
|
||||
</component>
|
||||
</settings>
|
||||
<cpi:offlineImage cpi:source="wim:d:/lab/win2k8r2sp1/sources/install.wim#Windows Server 2008 R2 SERVERSTANDARD" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
|
||||
<cpi:offlineImage cpi:source="catalog:d:/lab/windows/win10/sources/install_windows 10 enterprise evaluation technical preview.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
|
||||
</unattend>
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,8 @@
|
|||
@echo off
|
||||
echo **
|
||||
echo * Building on Windows 7
|
||||
echo * Building on Windows 7 >> c:\buildlog.txt
|
||||
cscript //B "%windir%\system32\slmgr.vbs" /ato
|
||||
\\192.168.199.7\build\VMTools\setup64.exe /s /v "/qn"
|
||||
pause
|
||||
Exit
|
Binary file not shown.
|
@ -0,0 +1,111 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<unattend xmlns="urn:schemas-microsoft-com:unattend">
|
||||
<settings pass="windowsPE">
|
||||
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<InputLocale>en-US</InputLocale>
|
||||
<SystemLocale>en-US</SystemLocale>
|
||||
<UILanguage>en-US</UILanguage>
|
||||
<UILanguageFallback>en-US</UILanguageFallback>
|
||||
<UserLocale>en-US</UserLocale>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<ImageInstall>
|
||||
<OSImage>
|
||||
<InstallTo>
|
||||
<DiskID>0</DiskID>
|
||||
<PartitionID>1</PartitionID>
|
||||
</InstallTo>
|
||||
<InstallFrom>
|
||||
<MetaData wcm:action="add">
|
||||
<Key>/IMAGE/INDEX</Key>
|
||||
<Value>1</Value>
|
||||
</MetaData>
|
||||
</InstallFrom>
|
||||
</OSImage>
|
||||
</ImageInstall>
|
||||
<UserData>
|
||||
<AcceptEula>true</AcceptEula>
|
||||
<FullName>Lab</FullName>
|
||||
<Organization>Lab.local</Organization>
|
||||
</UserData>
|
||||
<DiskConfiguration>
|
||||
<Disk wcm:action="add">
|
||||
<CreatePartitions>
|
||||
<CreatePartition wcm:action="add">
|
||||
<Extend>true</Extend>
|
||||
<Order>1</Order>
|
||||
<Type>Primary</Type>
|
||||
</CreatePartition>
|
||||
</CreatePartitions>
|
||||
<DiskID>0</DiskID>
|
||||
<WillWipeDisk>true</WillWipeDisk>
|
||||
</Disk>
|
||||
</DiskConfiguration>
|
||||
</component>
|
||||
</settings>
|
||||
<settings pass="specialize">
|
||||
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<ComputerName>Template7</ComputerName>
|
||||
</component>
|
||||
<component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DomainProfile_EnableFirewall>false</DomainProfile_EnableFirewall>
|
||||
<PrivateProfile_EnableFirewall>false</PrivateProfile_EnableFirewall>
|
||||
<PublicProfile_EnableFirewall>false</PublicProfile_EnableFirewall>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<fDenyTSConnections>false</fDenyTSConnections>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-IE-ESC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<IEHardenUser>false</IEHardenUser>
|
||||
<IEHardenAdmin>false</IEHardenAdmin>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-TCPIP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Interfaces>
|
||||
<Interface wcm:action="add">
|
||||
<Ipv4Settings>
|
||||
<DhcpEnabled>true</DhcpEnabled>
|
||||
</Ipv4Settings>
|
||||
<Identifier>1</Identifier>
|
||||
</Interface>
|
||||
</Interfaces>
|
||||
</component>
|
||||
</settings>
|
||||
<settings pass="oobeSystem">
|
||||
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<AutoLogon>
|
||||
<Password>
|
||||
<Value>VgBNAHcAYQByAGUAMQAhAFAAYQBzAHMAdwBvAHIAZAA=</Value>
|
||||
<PlainText>false</PlainText>
|
||||
</Password>
|
||||
<Enabled>true</Enabled>
|
||||
<LogonCount>999</LogonCount>
|
||||
<Username>administrator</Username>
|
||||
</AutoLogon>
|
||||
<FirstLogonCommands>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>a:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer</Description>
|
||||
<Order>1</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
<OOBE>
|
||||
<HideEULAPage>true</HideEULAPage>
|
||||
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
|
||||
<NetworkLocation>Work</NetworkLocation>
|
||||
<SkipMachineOOBE>true</SkipMachineOOBE>
|
||||
<SkipUserOOBE>true</SkipUserOOBE>
|
||||
</OOBE>
|
||||
<UserAccounts>
|
||||
<AdministratorPassword>
|
||||
<Value>VgBNAHcAYQByAGUAMQAhAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAUABhAHMAcwB3AG8AcgBkAA==</Value>
|
||||
<PlainText>false</PlainText>
|
||||
</AdministratorPassword>
|
||||
</UserAccounts>
|
||||
</component>
|
||||
</settings>
|
||||
<cpi:offlineImage cpi:source="catalog:c:/_source/win7/sources/install_windows 7 enterprise.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
|
||||
</unattend>
|
|
@ -0,0 +1,8 @@
|
|||
@echo off
|
||||
echo **
|
||||
echo * Building on Windows 8
|
||||
echo * Building on Windows 8 >> c:\buildlog.txt
|
||||
cscript //B "%windir%\system32\slmgr.vbs" /ato
|
||||
\\192.168.199.7\build\VMTools\setup64.exe /s /v "/qn"
|
||||
pause
|
||||
Exit
|
Binary file not shown.
|
@ -18,7 +18,7 @@
|
|||
<InstallFrom>
|
||||
<MetaData wcm:action="add">
|
||||
<Key>/IMAGE/INDEX</Key>
|
||||
<Value>2</Value>
|
||||
<Value>1</Value>
|
||||
</MetaData>
|
||||
</InstallFrom>
|
||||
</OSImage>
|
||||
|
@ -45,79 +45,32 @@
|
|||
</settings>
|
||||
<settings pass="specialize">
|
||||
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<ComputerName>vc</ComputerName>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-TCPIP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Interfaces>
|
||||
<Interface wcm:action="add">
|
||||
<Ipv4Settings>
|
||||
<DhcpEnabled>false</DhcpEnabled>
|
||||
<Metric>10</Metric>
|
||||
<RouterDiscoveryEnabled>false</RouterDiscoveryEnabled>
|
||||
</Ipv4Settings>
|
||||
<UnicastIpAddresses>
|
||||
<IpAddress wcm:action="add" wcm:keyValue="1">192.168.199.5/24</IpAddress>
|
||||
</UnicastIpAddresses>
|
||||
<Identifier>Local Area Connection</Identifier>
|
||||
<Routes>
|
||||
<Route wcm:action="add">
|
||||
<Identifier>0</Identifier>
|
||||
<Metric>10</Metric>
|
||||
<NextHopAddress>192.168.199.2</NextHopAddress>
|
||||
<Prefix>0.0.0.0/0</Prefix>
|
||||
</Route>
|
||||
</Routes>
|
||||
</Interface>
|
||||
</Interfaces>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Identification>
|
||||
<Credentials>
|
||||
<Domain>lab.local</Domain>
|
||||
<Password>VMware1!</Password>
|
||||
<Username>JoinUser</Username>
|
||||
</Credentials>
|
||||
<JoinDomain>lab.local</JoinDomain>
|
||||
</Identification>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-DNS-Client" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DNSSuffixSearchOrder>
|
||||
<DomainName wcm:action="add" wcm:keyValue="1">lab.local</DomainName>
|
||||
</DNSSuffixSearchOrder>
|
||||
<Interfaces>
|
||||
<Interface wcm:action="add">
|
||||
<DNSServerSearchOrder>
|
||||
<IpAddress wcm:action="add" wcm:keyValue="1">192.168.199.4</IpAddress>
|
||||
</DNSServerSearchOrder>
|
||||
<DisableDynamicUpdate>true</DisableDynamicUpdate>
|
||||
<DNSDomain>lab.local</DNSDomain>
|
||||
<EnableAdapterDomainNameRegistration>true</EnableAdapterDomainNameRegistration>
|
||||
<Identifier>Local Area Connection</Identifier>
|
||||
</Interface>
|
||||
</Interfaces>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon>
|
||||
<ComputerName>Template8</ComputerName>
|
||||
</component>
|
||||
<component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DomainProfile_EnableFirewall>false</DomainProfile_EnableFirewall>
|
||||
<PrivateProfile_EnableFirewall>false</PrivateProfile_EnableFirewall>
|
||||
<PublicProfile_EnableFirewall>false</PublicProfile_EnableFirewall>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<fDenyTSConnections>false</fDenyTSConnections>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<TrustedSites>https://*.lab.local;http://*.lab.local;http://v1</TrustedSites>
|
||||
<DisableFirstRunWizard>true</DisableFirstRunWizard>
|
||||
<DisableOOBAccelerators>true</DisableOOBAccelerators>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-IE-ESC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<IEHardenAdmin>false</IEHardenAdmin>
|
||||
<IEHardenUser>false</IEHardenUser>
|
||||
<IEHardenAdmin>false</IEHardenAdmin>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-TCPIP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Interfaces>
|
||||
<Interface wcm:action="add">
|
||||
<Ipv4Settings>
|
||||
<DhcpEnabled>true</DhcpEnabled>
|
||||
</Ipv4Settings>
|
||||
<Identifier>1</Identifier>
|
||||
</Interface>
|
||||
</Interfaces>
|
||||
</component>
|
||||
</settings>
|
||||
<settings pass="oobeSystem">
|
||||
|
@ -128,9 +81,17 @@
|
|||
<PlainText>false</PlainText>
|
||||
</Password>
|
||||
<Enabled>true</Enabled>
|
||||
<LogonCount>99</LogonCount>
|
||||
<Username>vc\Administrator</Username>
|
||||
<LogonCount>999</LogonCount>
|
||||
<Username>administrator</Username>
|
||||
</AutoLogon>
|
||||
<FirstLogonCommands>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>a:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer</Description>
|
||||
<Order>1</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
<OOBE>
|
||||
<HideEULAPage>true</HideEULAPage>
|
||||
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
|
||||
|
@ -142,27 +103,10 @@
|
|||
<PlainText>false</PlainText>
|
||||
</AdministratorPassword>
|
||||
</UserAccounts>
|
||||
<FirstLogonCommands>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>A:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from A Drive</Description>
|
||||
<Order>1</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>D:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from D Drive</Description>
|
||||
<Order>2</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>E:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from E Drive</Description>
|
||||
<Order>3</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
<BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>
|
||||
<DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet>
|
||||
<ShowWindowsLive>false</ShowWindowsLive>
|
||||
</component>
|
||||
</settings>
|
||||
<cpi:offlineImage cpi:source="wim:d:/lab/win2k8r2sp1/sources/install.wim#Windows Server 2008 R2 SERVERSTANDARD" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
|
||||
<cpi:offlineImage cpi:source="catalog:d:/lab/windows/win8/sources/install_windows 8.1 pro.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
|
||||
</unattend>
|
Binary file not shown.
BIN
SRC/SS/SS.flp
BIN
SRC/SS/SS.flp
Binary file not shown.
|
@ -18,7 +18,7 @@
|
|||
<InstallFrom>
|
||||
<MetaData wcm:action="add">
|
||||
<Key>/IMAGE/INDEX</Key>
|
||||
<Value>1</Value>
|
||||
<Value>2</Value>
|
||||
</MetaData>
|
||||
</InstallFrom>
|
||||
</OSImage>
|
||||
|
@ -130,10 +130,22 @@
|
|||
</UserAccounts>
|
||||
<FirstLogonCommands>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>a:\Build.cmd</CommandLine>
|
||||
<Description>Build</Description>
|
||||
<CommandLine>A:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from A Drive</Description>
|
||||
<Order>1</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>D:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from D Drive</Description>
|
||||
<Order>2</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<CommandLine>E:\Build.cmd</CommandLine>
|
||||
<Description>Phase One Installer from E Drive</Description>
|
||||
<Order>3</Order>
|
||||
<RequiresUserInput>true</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
</component>
|
||||
|
|
|
@ -6,27 +6,21 @@ ver | find "6.2" > nul
|
|||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "6.3" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "10.0" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K16
|
||||
goto RunBuild
|
||||
:ver_2K8
|
||||
goto RunBuild
|
||||
:ver_2K12
|
||||
:ver_2K16
|
||||
netsh interface ip set address name="Ethernet" static 192.168.199.35 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set address name="Ethernet0" static 192.168.199.35 255.255.255.0 192.168.199.2 1
|
||||
ping 192.168.199.2
|
||||
netsh interface ip set dnsservers name="Ethernet" static address=192.168.199.4 primary
|
||||
netsh interface ip set dnsservers name="Ethernet0" static address=192.168.199.4 primary
|
||||
Dism /online /enable-feature /featurename:NetFx3ServerFeatures
|
||||
Dism /online /enable-feature /featurename:NetFx3 /source:D:\Sources\sxs
|
||||
copy \\192.168.199.7\Build\Automate\DC\ocsetup.exe c:\windows\system32\
|
||||
echo * Mount Install Image
|
||||
echo * Mount Install Image >> c:\buildlog.txt
|
||||
mkdir c:\mountdir
|
||||
Dism /mount-wim /WimFile:D:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
echo * Setup recall of build script
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /t REG_SZ /d "cmd /c c:\build.cmd" /f >> c:\buildlog.txt
|
||||
echo * Install GUI onto Server Core
|
||||
echo * Install GUI onto Server Core >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:server-gui-shell /all /source:c:\mountdir\windows\winsxs /quiet
|
||||
Pause
|
||||
goto RunBuild
|
||||
:RunBuild
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
|
|
BIN
SRC/VC.flp
BIN
SRC/VC.flp
Binary file not shown.
|
@ -1,4 +1,6 @@
|
|||
@echo off
|
||||
echo * Starting build.cmd
|
||||
echo * Starting build.cmd >> c:\buildlog.txt
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
ver | find "6.1" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K8
|
||||
|
@ -6,17 +8,26 @@ ver | find "6.2" > nul
|
|||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "6.3" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "10.0" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K16
|
||||
goto RunBuild
|
||||
:ver_2K8
|
||||
goto RunBuild
|
||||
:ver_2K12
|
||||
echo **
|
||||
echo * Building on Windows 2012
|
||||
echo * Building on Windows 2012 >> c:\buildlog.txt
|
||||
echo * Building on Windows 2008 core
|
||||
echo * Building on Windows 2008 core >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:NetFx2-ServerCore >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:NetFx3-ServerCore >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:NetFx2-ServerCore-WOW64 >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:NetFx3-ServerCore-WOW64 >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:MicrosoftWindowsPowerShell >> c:\buildlog.txt
|
||||
DISM.exe /online /enable-feature /featurename:MicrosoftWindowsPowerShell-WOW64 >> c:\buildlog.txt
|
||||
echo * Set IP address
|
||||
echo * Set IP address >> c:\buildlog.txt
|
||||
netsh interface ip set address "Ethernet" static 192.168.199.5 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set address "Ethernet0" static 192.168.199.5 255.255.255.0 192.168.199.2 1
|
||||
ping 192.168.199.2
|
||||
netsh interface ip set dnsservers "Ethernet" static 192.168.199.4 primary
|
||||
netsh interface ip set dnsservers "Ethernet0" static 192.168.199.4 primary
|
||||
echo * Install .Net 3
|
||||
echo * Install .Net 3 >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:NetFx3ServerFeatures /quiet
|
||||
|
@ -26,23 +37,34 @@ echo * Install Setup recall of build script
|
|||
echo * Install Setup recall of build script >> c:\buildlog.txt
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f >> c:\buildlog.txt
|
||||
echo * Mount Install Image
|
||||
echo * Mount Install Image >> c:\buildlog.txt
|
||||
mkdir c:\mountdir
|
||||
If Exist D:\sources\install.wim Dism /mount-wim /WimFile:D:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
If Exist E:\sources\install.wim Dism /mount-wim /WimFile:E:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
echo * Install GUI onto Server Core
|
||||
echo * Install GUI onto Server Core >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:server-gui-mgmt /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
Dism /online /enable-feature /featurename:server-gui-shell /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
Dism /online /enable-feature /featurename:servercore-fullserver /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
echo * Install Media Foundation
|
||||
echo * Install Media Foundation >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:ServerMediaFoundation /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
echo * Install Desktop Experience
|
||||
echo * Install Desktop Experience >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:DesktopExperience /all /source:c:\mountdir\windows\winsxs /quiet
|
||||
pause
|
||||
shutdown -r -t 1
|
||||
exit
|
||||
:ver_2K12
|
||||
echo **
|
||||
echo * Building on Windows 2012
|
||||
echo * Building on Windows 2012 >> c:\buildlog.txt
|
||||
goto StartBuild
|
||||
:ver_2K16
|
||||
echo **
|
||||
echo * Building on Windows 2012
|
||||
echo * Building on Windows 2012 >> c:\buildlog.txt
|
||||
goto StartBuild
|
||||
:StartBuild
|
||||
echo * Set IP address
|
||||
echo * Set IP address >> c:\buildlog.txt
|
||||
netsh interface ip set address "Ethernet" static 192.168.199.5 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set address "Ethernet0" static 192.168.199.5 255.255.255.0 192.168.199.2 1
|
||||
ping 192.168.199.2
|
||||
netsh interface ip set dnsservers "Ethernet" static 192.168.199.4 primary
|
||||
netsh interface ip set dnsservers "Ethernet0" static 192.168.199.4 primary
|
||||
echo * Install .Net 3
|
||||
echo * Install .Net 3 >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:NetFx3ServerFeatures /quiet
|
||||
Dism /online /enable-feature /featurename:NetFx3 /source:D:\Sources\sxs /quiet
|
||||
copy \\192.168.199.7\Build\Automate\DC\ocsetup.exe c:\windows\system32\
|
||||
echo * Install Setup recall of build script
|
||||
echo * Install Setup recall of build script >> c:\buildlog.txt
|
||||
goto RunBuild
|
||||
:RunBuild
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
c:\build.cmd
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
@echo off
|
||||
type \\192.168.199.7\Build\Automate\version.txt >> c:\buildlog.txt
|
||||
ver | find "6.1" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K8
|
||||
ver | find "6.2" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
ver | find "6.3" > nul
|
||||
if %ERRORLEVEL% == 0 goto ver_2K12
|
||||
goto RunBuild
|
||||
:ver_2K8
|
||||
goto RunBuild
|
||||
:ver_2K12
|
||||
echo **
|
||||
echo * Building on Windows 2012
|
||||
echo * Building on Windows 2012 >> c:\buildlog.txt
|
||||
echo * Set IP address
|
||||
echo * Set IP address >> c:\buildlog.txt
|
||||
netsh interface ip set address "Ethernet" static 192.168.199.5 255.255.255.0 192.168.199.2 1
|
||||
netsh interface ip set dnsservers "Ethernet" static 192.168.199.4 primary
|
||||
echo * Install .Net 3
|
||||
echo * Install .Net 3 >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:NetFx3ServerFeatures /quiet
|
||||
Dism /online /enable-feature /featurename:NetFx3 /source:D:\Sources\sxs /quiet
|
||||
copy \\192.168.199.7\Build\Automate\DC\ocsetup.exe c:\windows\system32\
|
||||
echo * Install Setup recall of build script
|
||||
echo * Install Setup recall of build script >> c:\buildlog.txt
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Build /t REG_SZ /d "cmd /c c:\Build.cmd" /f >> c:\buildlog.txt
|
||||
echo * Mount Install Image
|
||||
echo * Mount Install Image >> c:\buildlog.txt
|
||||
mkdir c:\mountdir
|
||||
If Exist D:\sources\install.wim Dism /mount-wim /WimFile:D:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
If Exist E:\sources\install.wim Dism /mount-wim /WimFile:E:\sources\install.wim /Index:2 /MountDir:c:\mountdir /readonly /quiet
|
||||
echo * Install GUI onto Server Core
|
||||
echo * Install GUI onto Server Core >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:server-gui-mgmt /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
Dism /online /enable-feature /featurename:server-gui-shell /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
Dism /online /enable-feature /featurename:servercore-fullserver /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
echo * Install Media Foundation
|
||||
echo * Install Media Foundation >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:ServerMediaFoundation /all /source:c:\mountdir\windows\winsxs /quiet /norestart
|
||||
echo * Install Desktop Experience
|
||||
echo * Install Desktop Experience >> c:\buildlog.txt
|
||||
Dism /online /enable-feature /featurename:DesktopExperience /all /source:c:\mountdir\windows\winsxs /quiet
|
||||
pause
|
||||
:RunBuild
|
||||
copy \\192.168.199.7\Build\automate\%computername%\Build.cmd c:\
|
||||
c:\build.cmd
|
||||
Exit
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -18,7 +18,7 @@
|
|||
<InstallFrom>
|
||||
<MetaData wcm:action="add">
|
||||
<Key>/IMAGE/INDEX</Key>
|
||||
<Value>1</Value>
|
||||
<Value>2</Value>
|
||||
</MetaData>
|
||||
</InstallFrom>
|
||||
</OSImage>
|
||||
|
|
BIN
SRC/VC2.flp
BIN
SRC/VC2.flp
Binary file not shown.
53
SRC/buildpop
53
SRC/buildpop
|
@ -1,53 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name="BuildPop"
|
||||
start_cmd="${name}_start"
|
||||
stop_cmd=":"
|
||||
|
||||
BuildPop_start()
|
||||
{
|
||||
mkdir /mnt/cd0
|
||||
mount_cd9660 /dev/cd0 /mnt/cd0
|
||||
mkdir /mnt/cd1
|
||||
mount_cd9660 /dev/cd1 /mnt/cd1
|
||||
|
||||
if [ -f "/mnt/LABVOL/Build/ESXi60/vmware-esx-base-readme" ]
|
||||
then
|
||||
echo "Already have ESXi 6.0 installer"
|
||||
else
|
||||
if [ -f "/mnt/cd0/vmware-esx-base-readme" ]
|
||||
then
|
||||
echo "Found ESXi installer on CD0"
|
||||
cp -r /mnt/cd0/* /mnt/LABVOL/Build/ESXi60
|
||||
fi
|
||||
if [ -f "/mnt/cd1/vmware-esx-base-readme" ]
|
||||
then
|
||||
echo "Found ESXi installer on CD1"
|
||||
cp -r /mnt/cd1/* /mnt/LABVOL/Build/ESXi60
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -f "/mnt/LABVOL/Build/VIM_60/autorun.exe" ]
|
||||
then
|
||||
echo "Already have vCentre 6.0 installer"
|
||||
else
|
||||
if [ -f "/mnt/cd0/autorun.exe" ]
|
||||
then
|
||||
echo "Found vCentre installer on CD0"
|
||||
cp -r /mnt/cd0/* /mnt/LABVOL/Build/VIM_60
|
||||
else
|
||||
fi
|
||||
if [ -f "/mnt/cd1/autorun.exe" ]
|
||||
then
|
||||
echo "Found vCentre installer on CD1"
|
||||
cp -r /mnt/cd1/* /mnt/LABVOL/Build/VIM_60
|
||||
else
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
load_rc_config $name
|
||||
run_rc_command "$1"
|
||||
|
Loading…
Reference in New Issue