# Build Validation script for vSphere AutoLab # # 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" If (!($Auto)) {Read-Host "Press to exit" } exit } $Global:Pass = $true if (Test-Administrator) { Write-Host "Great, script is running as administrator" -foregroundcolor "Green" } else { Start-Process PowerShell.exe -Verb Runas -ArgumentList " c:\validate.ps1" exit } # 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 "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" Write-Host "Error events from system eventlog on " $CompName -foregroundcolor "cyan" 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" 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 } } } If ((Get-WmiObject Win32_BIOS).Manufacturer.Tolower() -like "bochs*") { Write-Host "Building on Ravello, set some build options." -foregroundcolor "green" $AutoAddHosts = (Read-Host "Automatically add hosts to vCentre when it builds (y/n)").ToLower() If ($AutoAddHosts -eq "n") { $TempContent = Get-Content B:\Automate\Automate.ini |%{$_ -replace "AutoAddHosts=true","AutoAddHosts=false"} $TempContent | Set-Content B:\Automate\Automate.ini } If ($AutoAddHosts -eq "y") { $TempContent = Get-Content B:\Automate\Automate.ini |%{$_ -replace "AutoAddHosts=false","AutoAddHosts=true"} $TempContent | Set-Content B:\Automate\Automate.ini Write-Host "Make sure the ESXi hosts are properly built & restart cleanly" -foregroundcolor "cyan" } } 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" } 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" Check-File "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\VUM.mdf" "vCenter Update Manager Database" } elseif (Test-Path -LiteralPath "C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\") { Check-File "C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\vCenter.mdf" "vCenter Database" Check-File "C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\VUM.mdf" "vCenter Update Manager Database" } 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 ($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 } 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 } } Write-Host "Check Domain" -foregroundcolor "cyan" $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() if ($domain.Name -eq "lab.local") { Write-Host ("Correct Domain") -foregroundcolor "green" } else { Write-Host ("Domain Broken") -foregroundcolor "red" $Global:Pass = $false } Write-Host "Check Services" -foregroundcolor "cyan" Check-ServiceRunning "Active Directory Domain Services" Check-ServiceRunning "DHCP Server" Check-ServiceRunning "DNS Server" Check-ServiceRunning "Netlogon" Check-ServiceRunning "Tftpd32_svc" Check-ServiceRunning "SQL Server (SQLEXPRESS)" Check-ServiceRunning "SQLBrowser" 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") Check-DNSRecord ("vma.lab.local") Check-DNSRecord ("nas.lab.local") Check-DNSRecord ("host1.lab.local") Check-DNSRecord ("host2.lab.local") Check-DNSRecord ("192.168.199.4") Check-DNSRecord ("192.168.199.5") Check-DNSRecord ("192.168.199.6") Check-DNSRecord ("192.168.199.7") Check-DNSRecord ("192.168.199.11") Check-DNSRecord ("192.168.199.12") Check-DNSRecord ("192.168.199.38") Check-DNSRecord ("192.168.199.39") Check-DNSRecord ("192.168.199.40") } 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") -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" -ErrorAction SilentlyContinue).InstalledVersion } 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 } Write-Host "VC version $VCVer" If (!($VCPath -eq "None")) { Write-Host "Check Files" -foregroundcolor "cyan" if ($Have2K3 -eq $True) {Check-File "$VCPath\sysprep\svr2003\sysprep.exe" "Windows 2003 SysPrep" } if ($HaveXP -eq $True) { Check-File "$VCPath\sysprep\xp\sysprep.exe" "Windows XP SysPrep" } if (Test-Path "B:\Automate\automate.ini") { if ($VCVer.StartsWith("4")) { if ((((Select-String -SimpleMatch "DeployVUM=" -Path "B:\Automate\automate.ini").line).substring(10)) -like "true") {Check-ServiceRunning "VMware vCenter Update Manager Service"} Check-ServiceRunning "ADAM_VMwareVCMSDS" Check-ServiceRunning "VMware VirtualCenter Management Webservices" Check-ServiceRunning "VMware VirtualCenter Server" } if ($VCVer.StartsWith("5")) { if ((((Select-String -SimpleMatch "DeployVUM=" -Path "B:\Automate\automate.ini").line).substring(10)) -like "true") {Check-ServiceRunning "VMware vSphere Update Manager Service"} Check-ServiceRunning "ADAM_VMwareVCMSDS" Check-ServiceRunning "VMware VirtualCenter Management Webservices" Check-ServiceRunning "VMware VirtualCenter Server" } 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" } if ($Have2K3 -eq $true) { Check-OptionalFile "\\192.168.199.7\Build\Windows2K3.iso" "Lightly automated Windows Server 2003 ISO" Check-OptionalFile "\\192.168.199.7\Build\Auto2K3.iso" "Fully automated Windows Server 2003 ISO" } if ($HaveXP -eq $true) {Check-OptionalFile "\\192.168.199.7\Build\AutoXP.iso" "Fully automated Windows XP ISO"} } if ($CompName -eq "DC2") { Write-Host "Check Domain" -foregroundcolor "cyan" $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() if ($domain.Name -eq "lab.local") { Write-Host ("Correct Domain") -foregroundcolor "green" } else { Write-Host ("Domain Broken") -foregroundcolor "red" $Global:Pass = $false } Write-Host "Check Services" -foregroundcolor "cyan" Check-ServiceRunning "Active Directory Domain Services" Check-ServiceRunning "DNS Server" Check-ServiceRunning "Netlogon" Check-ServiceRunning "SQL Server (SQLEXPRESS)" Check-ServiceRunning "SQLBrowser" 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") Check-DNSRecord ("vma.lab.local") Check-DNSRecord ("nas.lab.local") Check-DNSRecord ("host1.lab.local") Check-DNSRecord ("host2.lab.local") Check-DNSRecord ("192.168.199.4") Check-DNSRecord ("192.168.199.5") Check-DNSRecord ("192.168.199.6") Check-DNSRecord ("192.168.199.7") Check-DNSRecord ("192.168.199.11") Check-DNSRecord ("192.168.199.12") Check-DNSRecord ("192.168.199.38") Check-DNSRecord ("192.168.199.39") Check-DNSRecord ("192.168.199.40") } if ($CompName -eq "VC2") { 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" Check-ServiceRunning "VMware VirtualCenter Server" Check-ServiceRunning "ADAM_VMwareVCMSDS" } Else { 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" Write-Host ("*") -foregroundcolor "red" Write-Host ("* Oh dear, we seem to have a problem") -foregroundcolor "red" Write-Host ("*") -foregroundcolor "red" Write-Host ("* Check the build log to see what failed") -foregroundcolor "red" Write-Host ("*") -foregroundcolor "red" Write-Host ("*****************************************") -foregroundcolor "red" } else { Write-Host ("**************************************") -foregroundcolor "green" Write-Host ("*") -foregroundcolor "green" Write-Host ("* Build looks good") -foregroundcolor "green" Write-Host ("*") -foregroundcolor "green" Write-Host ("* Move on to the next stage") -foregroundcolor "green" Write-Host ("*") -foregroundcolor "green" Write-Host ("**************************************") -foregroundcolor "green" } If (!($Auto)) {Read-host " Press to exit"}