More emailing & Validate script
Validation of PowerCLI versions More services for VC 6 Better handling of VC 6 & 5.5pull/45/head
							parent
							
								
									f3afa4d5b3
								
							
						
					
					
						commit
						90c0964878
					
				|  | @ -14,6 +14,9 @@ if (Test-Path "B:\Automate\automate.ini") { | ||||||
| 	Write-BuildLog "  Timezone set to $timezone." | 	Write-BuildLog "  Timezone set to $timezone." | ||||||
| 	tzutil /s "$timezone" | 	tzutil /s "$timezone" | ||||||
| 	$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "B:\Automate\automate.ini").line).substring(9) | 	$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 (([System.Environment]::OSVersion.Version.Major -eq 6) -and ([System.Environment]::OSVersion.Version.Minor -ge 2)) { | ||||||
| 	Write-BuildLog "Disabling autorun of ServerManager at logon." | 	Write-BuildLog "Disabling autorun of ServerManager at logon." | ||||||
|  | @ -73,4 +76,19 @@ B:\automate\_Common\Autologon vi-admin lab $AdminPWD | ||||||
| reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f | reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f | ||||||
| Write-BuildLog "Install VMware Tools" | Write-BuildLog "Install VMware Tools" | ||||||
| b:\VMTools\Setup64.exe /s /v "/qn" | 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", 'text/plain')  | ||||||
|  | 	$mailmessage.Attachments.Add($attach)  | ||||||
|  | 	$message.Attachments.Add($attach)  | ||||||
|  | 	$SMTPClient.Send($mailmessage) | ||||||
|  | } | ||||||
| Read-Host "Rebooting after VMTools Install" | Read-Host "Rebooting after VMTools Install" | ||||||
|  |  | ||||||
|  | @ -14,6 +14,8 @@ if (Test-Path "B:\Automate\automate.ini") { | ||||||
| 	Write-BuildLog "  Timezone set to $timezone." | 	Write-BuildLog "  Timezone set to $timezone." | ||||||
| 	tzutil /s "$timezone" | 	tzutil /s "$timezone" | ||||||
| 	$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "B:\Automate\automate.ini").line).substring(9) | 	$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 (([System.Environment]::OSVersion.Version.Major -eq 6) -and ([System.Environment]::OSVersion.Version.Minor -ge 2)) { | ||||||
| 	Write-BuildLog "Disabling autorun of ServerManager at logon." | 	Write-BuildLog "Disabling autorun of ServerManager at logon." | ||||||
|  | @ -79,6 +81,21 @@ 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  >> c:\buildlog.txt | ||||||
| Write-BuildLog "Install VMware Tools" | Write-BuildLog "Install VMware Tools" | ||||||
| b:\VMTools\Setup64.exe /s /v "/qn" | 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", 'text/plain')  | ||||||
|  | 	$mailmessage.Attachments.Add($attach)  | ||||||
|  | 	$message.Attachments.Add($attach)  | ||||||
|  | 	$SMTPClient.Send($mailmessage) | ||||||
|  | } | ||||||
| Read-Host "Reboot?" | Read-Host "Reboot?" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -454,16 +454,15 @@ if (Test-Path "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe") | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -le 62)) { | If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -le 62)) { | ||||||
|  | 	Write-BuildLog "Doing Windows Server 2008 specific build actions" | ||||||
| 	if (Test-Path B:\sqlmsssetup.exe) { | 	if (Test-Path B:\sqlmsssetup.exe) { | ||||||
| 		Rename-Item B:\sqlmsssetup.exe SQLManagementStudio_x64_ENU.exe | 		Rename-Item B:\sqlmsssetup.exe SQLManagementStudio_x64_ENU.exe | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	if (Test-Path B:\SQLManagementStudio_x64_ENU.exe) { | 	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 ($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." | 			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 { | 		} else { | ||||||
| 			Write-BuildLog "SQL Management Studio found; installing." | 			Write-BuildLog "SQL Management Studio found; installing." | ||||||
| 			Install-WindowsFeature Net-Framework-Core |  | ||||||
| 			Start-Process B:\SQLManagementStudio_x64_ENU.exe -ArgumentList "/ACTION=INSTALL /IACCEPTSQLSERVERLICENSETERMS /FEATURES=Tools /q" -Wait -Verb RunAs | 			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)."} | 	} else { Write-BuildLog "SQL Management Studio not found (optional)."} | ||||||
|  | @ -478,6 +477,7 @@ If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]: | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| If (((([System.Environment]::OSVersion.Version.Major *10) +[System.Environment]::OSVersion.Version.Minor) -ge 62)) { | 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 "Disabling autorun of ServerManager at logon." | 	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" | 	Write-BuildLog "Disabling screen saver" | ||||||
|  |  | ||||||
|  | @ -14,6 +14,8 @@ if (Test-Path "B:\Automate\automate.ini") { | ||||||
| 	Write-BuildLog "  Timezone set to $timezone." | 	Write-BuildLog "  Timezone set to $timezone." | ||||||
| 	tzutil /s "$timezone" | 	tzutil /s "$timezone" | ||||||
| 	$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "B:\Automate\automate.ini").line).substring(9) | 	$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 (([System.Environment]::OSVersion.Version.Major -eq 6) -and ([System.Environment]::OSVersion.Version.Minor -ge 2)) { | ||||||
| 	Write-BuildLog "Disabling autorun of ServerManager at logon." | 	Write-BuildLog "Disabling autorun of ServerManager at logon." | ||||||
|  | @ -69,4 +71,19 @@ B:\automate\_Common\Autologon vi-admin lab $AdminPWD | ||||||
| reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f | reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Build /f | ||||||
| Write-BuildLog "Install VMware Tools" | Write-BuildLog "Install VMware Tools" | ||||||
| b:\VMTools\Setup64.exe /s /v "/qn" | 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", 'text/plain')  | ||||||
|  | 	$mailmessage.Attachments.Add($attach)  | ||||||
|  | 	$message.Attachments.Add($attach)  | ||||||
|  | 	$SMTPClient.Send($mailmessage) | ||||||
|  | } | ||||||
| Read-Host "Rebooting after VMTools Install" | Read-Host "Rebooting after VMTools Install" | ||||||
|  |  | ||||||
|  | @ -168,7 +168,9 @@ if ($CompName -eq "DC") { | ||||||
| 	if (Test-Path "b:\VMware-PowerCLI-5*.exe") { | 	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 (($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 (($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) -or !((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 (($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\Win2K3.iso" "Windows Server 2003 ISO" | ||||||
| 	Check-OptionalFile "\\192.168.199.7\Build\WinXP.iso" "Windows XP ISO" | 	Check-OptionalFile "\\192.168.199.7\Build\WinXP.iso" "Windows XP ISO" | ||||||
|  | @ -207,6 +209,19 @@ if ($CompName -eq "DC") { | ||||||
| 		Write-Host "ESXi 5.1 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red" | 		Write-Host "ESXi 5.1 TFTP files not found on DC, but they exist on Build share." -foregroundcolor "red" | ||||||
| 		$Global:Pass = $false | 		$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) | 	$vcinstall = ((Select-String -SimpleMatch "VCInstall=" -Path "B:\Automate\automate.ini").line).substring(10) | ||||||
| 	If ($vcinstall -eq "50") {$vcinstall = "5"} | 	If ($vcinstall -eq "50") {$vcinstall = "5"} | ||||||
| 	If (!($vSphere50) -and ($vcinstall -eq "5")) { | 	If (!($vSphere50) -and ($vcinstall -eq "5")) { | ||||||
|  | @ -221,6 +236,10 @@ if ($CompName -eq "DC") { | ||||||
| 		Write-Host "You wish to install vSphere 5.5 but the installers aren't on the build share"  -foregroundcolor "red" | 		Write-Host "You wish to install vSphere 5.5 but the installers aren't on the build share"  -foregroundcolor "red" | ||||||
| 		$Global:Pass = $false | 		$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" | 	Write-Host "Check Domain" -foregroundcolor "cyan" | ||||||
|     $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()  |     $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()  | ||||||
|     if ($domain.Name -eq "lab.local") { |     if ($domain.Name -eq "lab.local") { | ||||||
|  | @ -289,6 +308,9 @@ if ($CompName -eq "VC") { | ||||||
| 			if ($VCVer.StartsWith("6")) { | 			if ($VCVer.StartsWith("6")) { | ||||||
| 				if ((((Select-String -SimpleMatch "DeployVUM=" -Path "B:\Automate\automate.ini").line).substring(10)) -like "true") {Check-ServiceRunning "VMware vSphere Update Manager Service"} | 				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 VirtualCenter Server" | ||||||
|  | 				Check-ServiceRunning "VMware vSphere Web Client" | ||||||
|  | 				Check-ServiceRunning "VMware Directory Service" | ||||||
|  | 				Check-ServiceRunning "VMware vSphere Profile-Driven Storage Service" | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
|  |  | ||||||
|  | @ -1,215 +0,0 @@ | ||||||
| # Script to add add VMware vShield Manager to the AutoLab infrastructure |  | ||||||
| #  |  | ||||||
| # Thanks to Alan Renouf (http://www.virtu-al.net/2011/09/14/powershell-automated-install-of-vshield-5/) |  | ||||||
| # Thanks to Jeff Hicks for the Test-Website Function: http://jdhitsolutions.com/blog/2010/04/hey-are-you-awake/ |  | ||||||
| # Thanks to William Lam for the trick to change the Zebra file: http://www.virtuallyghetto.com/2011/09/how-to-automate-deployment.html |  | ||||||
| # AutoLab v1.1 |  | ||||||
| # |  | ||||||
| # |  | ||||||
| . "C:\PSFunctions.ps1" |  | ||||||
| Function New-ZebraFile ($vShieldHostName, $vShieldIP, $vShieldID, $vShieldGW) { |  | ||||||
| $ZebraFile = @" |  | ||||||
| ! |  | ||||||
| hostname $vShieldHostName |  | ||||||
| ! |  | ||||||
| interface mgmt |  | ||||||
|  ip address $vShieldIP/$vShieldID |  | ||||||
| ! |  | ||||||
| ip route 0.0.0.0/0 $vShieldGW |  | ||||||
| ! |  | ||||||
| line vty |  | ||||||
|  no login |  | ||||||
| ! |  | ||||||
| "@ |  | ||||||
| 
 |  | ||||||
| $ZebraFile | Out-File $ENV:TEMP\zebra.conf -Encoding "ASCII" |  | ||||||
| } |  | ||||||
| Function Post-vShieldAPI ($URL, $Body) { |  | ||||||
| 	$wc = New-Object System.Net.WebClient |  | ||||||
| 
 |  | ||||||
| 	# Add Authorization headers |  | ||||||
| 	$authbytes = [System.Text.Encoding]::ASCII.GetBytes($vshieldUser + ":" + $vShieldPass) |  | ||||||
| 	$base64 = [System.Convert]::ToBase64String($authbytes) |  | ||||||
| 	$authorization = "Authorization: Basic " + $base64 |  | ||||||
| 	$wc.Headers.Add($authorization) |  | ||||||
| 
 |  | ||||||
| 	$response = $wc.UploadString($URL, "POST", $Body) |  | ||||||
| } |  | ||||||
| Function Set-vShieldConfiguration ($vCenter, $Username, $Password, $PrimaryDNS, $SecondaryDNS) { |  | ||||||
| 	$Body = @" |  | ||||||
| <vsmGlobalConfig xmlns="vmware.vshield.edge.2.0"> |  | ||||||
| <dnsInfo> |  | ||||||
| <primaryDns>$($PrimaryDNS)</primaryDns> |  | ||||||
| <secondaryDns>$($SecondaryDNS)</secondaryDns> |  | ||||||
| </dnsInfo> |  | ||||||
| </vsmGlobalConfig> |  | ||||||
| "@ |  | ||||||
| 	Post-vShieldAPI -URL "https://$vShieldIP/api/2.0/global/config" -Body $Body |  | ||||||
| } |  | ||||||
| Function Wait-vShieldBoot { |  | ||||||
| 	do { |  | ||||||
| 		$VM = Get-VM $vShieldHostName |  | ||||||
| 		Sleep 5 |  | ||||||
| 	} until ($VM.ToolsStatus -eq "toolsOK") |  | ||||||
| } |  | ||||||
| Function Test-WebSite { |  | ||||||
|     [cmdletBinding()] |  | ||||||
|     Param ( |  | ||||||
|           [Parameter( |  | ||||||
|            ValueFromPipeline=$True,Position=0,Mandatory=$True, |  | ||||||
|            HelpMessage="The URL to test. Include http:// or https://")] |  | ||||||
|            [string]$url |  | ||||||
|            ) |  | ||||||
| 
 |  | ||||||
|     Begin { |  | ||||||
|         CS2 "Begin function" |  | ||||||
|         } |  | ||||||
|     Process { |  | ||||||
|         CS2 "Requesting $url" |  | ||||||
| 
 |  | ||||||
|         $wr=[system.net.webrequest]::Create($url) |  | ||||||
|         #set timeout to 7 seconds |  | ||||||
|         $wr.Timeout=7000 |  | ||||||
|         $start=Get-Date |  | ||||||
| 
 |  | ||||||
|         Try { |  | ||||||
|             $response=$wr.GetResponse() |  | ||||||
|             if ($response) { |  | ||||||
|                  CS2 "Response returned" |  | ||||||
|                 $Status=$response.StatusCode |  | ||||||
|                 $StatusCode=($response.Statuscode -as [int]) |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         Catch  [system.net.webexception] { |  | ||||||
|             CS2 "Failed to get a response from $url" |  | ||||||
|             $status =  $_.Exception.Response.StatusCode |  | ||||||
|             $statuscode = ( $_.Exception.Response.StatusCode -as [int]) |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         $end=Get-Date |  | ||||||
|         $timespan=$end-$start |  | ||||||
|         $ResponseMS=$timespan.TotalMilliseconds |  | ||||||
| 
 |  | ||||||
|         CS2 "status is $status" |  | ||||||
|         CS2 "statuscode is $statuscode" |  | ||||||
|         CS2 "timer is $responseMS" |  | ||||||
| 
 |  | ||||||
|         $obj=New-Object PSObject -Property @{ |  | ||||||
|             DateTime=$start |  | ||||||
|             URL=$url |  | ||||||
|             Status=$status |  | ||||||
|             StatusCode=$statuscode |  | ||||||
|             ResponseMS=$ResponseMS |  | ||||||
|          } |  | ||||||
|          Write-Output $obj |  | ||||||
| 
 |  | ||||||
|       } #end Process |  | ||||||
|      End { |  | ||||||
|         CS2 "End function" |  | ||||||
|      } |  | ||||||
| } |  | ||||||
| Function Wait-vShieldWebsite { |  | ||||||
|     do { |  | ||||||
|         $web = test-website https://$vShieldIP |  | ||||||
|         Sleep 5 |  | ||||||
|     } until ($Web.Status -eq "OK") |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| if ( (Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq $null ) |  | ||||||
| { |  | ||||||
| 	try { |  | ||||||
| 		Write-Host "Loading PowerCLI plugin, this will take a little while"  -foregroundcolor "cyan" |  | ||||||
| 		Add-PsSnapin VMware.VimAutomation.Core |  | ||||||
| 	} |  | ||||||
| 	catch { |  | ||||||
| 		Write-Host "Unable to load the PowerCLI plugin. Please verify installation and run this script again." |  | ||||||
| 		exit |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| #$null = Set-PowerCLIConfiguration -DisplayDeprecationWarnings:$false -InvalidCertificateAction Ignore -Confirm:$false |  | ||||||
| for ($i=1;$i -le 2; $i++){ |  | ||||||
|     $vmhost = "host$i.lab.local" |  | ||||||
|     $ping = new-object System.Net.NetworkInformation.Ping |  | ||||||
|     $Reply = $ping.send($vmhost) |  | ||||||
|     if ($Reply.status –ne "Success") { |  | ||||||
|         Write-Host $vmhost " not responding to ping, exiting"  -foregroundcolor "red" |  | ||||||
|         Write-Host "Re-run this script when both ESXi hosts are running"  -foregroundcolor "red" |  | ||||||
|         exit |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| $vShieldHostName = "vShield" |  | ||||||
| $vShieldFQDN = "vshield.lab.local" |  | ||||||
| $vShieldCluster = "Local" |  | ||||||
| $vShieldIP = "192.168.199.40" |  | ||||||
| $vShieldID = "24" |  | ||||||
| $vShieldGW = "192.168.199.2" |  | ||||||
| $vShieldPrimaryDNS = "192.168.199.4" |  | ||||||
| $vShieldSecondaryDNS = "192.168.199.4" |  | ||||||
| $vShieldUser = "admin" |  | ||||||
| $vShieldPass = "default" |  | ||||||
| $vCenter = "192.168.199.5" |  | ||||||
| $vcUsername = "Lab\vi-admin" |  | ||||||
| $vcPass = "VMware1!" |  | ||||||
| $Newproperty = New-VIProperty -Name ToolsStatus -ObjectType VirtualMachine -Value { |  | ||||||
| 	param($vm) |  | ||||||
| 	$vm.ExtensionData.Guest.ToolsStatus |  | ||||||
| } -Force |  | ||||||
| 
 |  | ||||||
| Write-Host "Connecting to vCenter" |  | ||||||
| try { |  | ||||||
| 	$Connect = Connect-VIServer -Server $vCenter -User $vcUsername -Password $vcPass -ErrorAction Stop |  | ||||||
| 	$VMhost = Get-Cluster $vShieldCluster | Get-VMHost | Select -First 1 |  | ||||||
| } |  | ||||||
| catch { |  | ||||||
| 	Write-Host "Unable to connect to to $vCenter. Exiting." |  | ||||||
| 	exit |  | ||||||
| } |  | ||||||
| # Work out which iSCSI datastore has the most free space |  | ||||||
| $vShieldDS = Get-Datastore -name iSCSI* | Select Name, FreeSpaceGB | Sort-Object -Property FreeSpaceGB | Select-Object -First 1 |  | ||||||
| 
 |  | ||||||
| if (Test-Path "\\192.168.199.7\Build\vCD_15\VMware-vShield-Manager-5.0.*.ova") { |  | ||||||
| 	$vshieldOVA = (Get-ChildItem \\192.168.199.7\Build\vCD_15\VMware-vShield-Manager-5.0.*.ova).FullName |  | ||||||
| 	Write-Host "Importing the vShield OVA" |  | ||||||
| 	try {	 |  | ||||||
| 		$va = Import-VApp -Name $vShieldHostName -Datastore $vShieldDS.Name -VMHost $VMHost -Source $vshieldOVA -ErrorAction Stop |  | ||||||
| 		$null = Get-VM $vShieldHostName | Set-VM -MemoryMB 512 -Confirm:$false |  | ||||||
| 		$null = Get-VMResourceConfiguration -VM $vShieldHostName | Set-VMResourceConfiguration -MemReservationMB 0 |  | ||||||
| 		Write-Host "Starting the vShield VM" |  | ||||||
| 		$Start = Start-VM $vShieldHostName -Confirm:$false |  | ||||||
| 		Wait-vShieldBoot |  | ||||||
| 		Write-Host "vShield Manager import complete." |  | ||||||
| 	} |  | ||||||
| 	catch { |  | ||||||
| 		write-host "Unable to import vShield. Exiting." |  | ||||||
| 		exit |  | ||||||
| 	} |  | ||||||
| } else { |  | ||||||
| 	Write-Host "vShield OVA not found. Please copy the file to the Build share and try again." |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ### Commented out due to issues with vShield VM authentication during Invoke-VMScript |  | ||||||
| # Write-Host "Waiting until the vShield VM has started" |  | ||||||
| # Wait-vShieldBoot |  | ||||||
| # Write-Host "Setting the initial IP address after boot" |  | ||||||
| # $Zebrafile = New-Zebrafile -vShieldHostName $vShieldFQDN -vShieldIP $vShieldIP -vShieldID $vShieldID -vShieldGW $vShieldGW |  | ||||||
| # $Password = ConvertTo-SecureString -AsPlainText $vShieldPass -Force |  | ||||||
| # $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "admin", $Password |  | ||||||
| 
 |  | ||||||
| # $invoke = Invoke-VMScript -VM vShield -ScriptText "mv /common/configs/cli/zebra.conf /common/configs/cli/zebra.conf.bak" -ScriptType Bash -GuestCredential $cred |  | ||||||
| # $ReIP = Copy-VMGuestFile -VM $vShieldHostName -Source $ENV:TEMP\zebra.conf -Destination "/common/configs/cli/" -LocalToGuest -GuestUser $vShieldUser -GuestPassword $vShieldPass |  | ||||||
| 
 |  | ||||||
| # Write-Host "Powering Off the vShield VM" |  | ||||||
| # Sleep 5 |  | ||||||
| # $Stop = Stop-VM $vShieldHostName -Confirm:$false |  | ||||||
| # Write-Host "Starting the vShield VM" |  | ||||||
| # $Start = Start-VM $vShieldHostName -Confirm:$false |  | ||||||
| 
 |  | ||||||
| # Write-Host "Waiting until the vShield VM has started" |  | ||||||
| # Wait-vShieldBoot |  | ||||||
| 
 |  | ||||||
| # Write-Host "Waiting until the vShield Management site has started" |  | ||||||
| # Wait-vShieldWebsite |  | ||||||
| 
 |  | ||||||
| # Write-Host "Linking vShield to vCenter and set DNS entries" |  | ||||||
| # $SetIP = Set-vShieldConfiguration -vCenter $vCenter -Username $vcUsername -Password $vcPass -PrimaryDNS $vShieldPrimaryDNS -SecondaryDNS $vShieldSecondaryDNS |  | ||||||
| # Write-Host "Configuration Complete" |  | ||||||
|  | @ -1,228 +0,0 @@ | ||||||
| # Script to add add VMware vShield Manager to the AutoLab infrastructure |  | ||||||
| #  |  | ||||||
| # Thanks to Alan Renouf (http://www.virtu-al.net/2011/09/14/powershell-automated-install-of-vshield-5/) |  | ||||||
| # Thanks to Jeff Hicks for the Test-Website Function: http://jdhitsolutions.com/blog/2010/04/hey-are-you-awake/ |  | ||||||
| # Thanks to William Lam for the trick to change the Zebra file: http://www.virtuallyghetto.com/2011/09/how-to-automate-deployment.html |  | ||||||
| # AutoLab v1.1 |  | ||||||
| # |  | ||||||
| # |  | ||||||
| . "C:\PSFunctions.ps1" |  | ||||||
| Function New-ZebraFile ($vShieldHostName, $vShieldIP, $vShieldID, $vShieldGW) { |  | ||||||
| $ZebraFile = @" |  | ||||||
| ! |  | ||||||
| hostname $vShieldHostName |  | ||||||
| ! |  | ||||||
| interface mgmt |  | ||||||
|  ip address $vShieldIP/$vShieldID |  | ||||||
| ! |  | ||||||
| ip route 0.0.0.0/0 $vShieldGW |  | ||||||
| ! |  | ||||||
| line vty |  | ||||||
|  no login |  | ||||||
| ! |  | ||||||
| "@ |  | ||||||
| 
 |  | ||||||
| $ZebraFile | Out-File $ENV:TEMP\zebra.conf -Encoding "ASCII" |  | ||||||
| } |  | ||||||
| Function Post-vShieldAPI ($URL, $Body) { |  | ||||||
| 	$wc = New-Object System.Net.WebClient |  | ||||||
| 
 |  | ||||||
| 	# Add Authorization headers |  | ||||||
| 	$authbytes = [System.Text.Encoding]::ASCII.GetBytes($vshieldUser + ":" + $vShieldPass) |  | ||||||
| 	$base64 = [System.Convert]::ToBase64String($authbytes) |  | ||||||
| 	$authorization = "Authorization: Basic " + $base64 |  | ||||||
| 	$wc.Headers.Add($authorization) |  | ||||||
| 
 |  | ||||||
| 	$response = $wc.UploadString($URL, "POST", $Body) |  | ||||||
| } |  | ||||||
| Function Set-vShieldConfiguration ($vCenter, $Username, $Password, $PrimaryDNS, $SecondaryDNS) { |  | ||||||
| 	$Body = @" |  | ||||||
| <vsmGlobalConfig xmlns="vmware.vshield.edge.2.0"> |  | ||||||
| <dnsInfo> |  | ||||||
| <primaryDns>$($PrimaryDNS)</primaryDns> |  | ||||||
| <secondaryDns>$($SecondaryDNS)</secondaryDns> |  | ||||||
| </dnsInfo> |  | ||||||
| </vsmGlobalConfig> |  | ||||||
| "@ |  | ||||||
| 	Post-vShieldAPI -URL "https://$vShieldIP/api/2.0/global/config" -Body $Body |  | ||||||
| } |  | ||||||
| function Wait-vShieldBoot { |  | ||||||
| 	do { |  | ||||||
| 		$VM = Get-VM $vShieldHostName |  | ||||||
| 		Sleep 5 |  | ||||||
| 	} until ($VM.ToolsStatus -eq "toolsOK") |  | ||||||
| } |  | ||||||
| Function Test-WebSite { |  | ||||||
|     [cmdletBinding()] |  | ||||||
|     Param ( |  | ||||||
|           [Parameter( |  | ||||||
|            ValueFromPipeline=$True,Position=0,Mandatory=$True, |  | ||||||
|            HelpMessage="The URL to test. Include http:// or https://")] |  | ||||||
|            [string]$url |  | ||||||
|            ) |  | ||||||
| 
 |  | ||||||
|     Begin { |  | ||||||
|         Write-Verbose "Begin function" |  | ||||||
|         } |  | ||||||
|     Process { |  | ||||||
|         Write-Verbose "Requesting $url" |  | ||||||
| 
 |  | ||||||
|         $wr=[system.net.webrequest]::Create($url) |  | ||||||
|         #set timeout to 7 seconds |  | ||||||
|         $wr.Timeout=7000 |  | ||||||
|         $start=Get-Date |  | ||||||
| 
 |  | ||||||
|         Try { |  | ||||||
|             $response=$wr.GetResponse() |  | ||||||
|             if ($response) { |  | ||||||
|                  Write-Verbose "Response returned" |  | ||||||
|                 $Status=$response.StatusCode |  | ||||||
|                 $StatusCode=($response.Statuscode -as [int]) |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         Catch  [system.net.webexception] { |  | ||||||
|             Write-Verbose "Failed to get a response from $url" |  | ||||||
|             $status =  $_.Exception.Response.StatusCode |  | ||||||
|             $statuscode = ( $_.Exception.Response.StatusCode -as [int]) |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         $end=Get-Date |  | ||||||
|         $timespan=$end-$start |  | ||||||
|         $ResponseMS=$timespan.TotalMilliseconds |  | ||||||
| 
 |  | ||||||
|         Write-Verbose "status is $status" |  | ||||||
|         Write-Verbose "statuscode is $statuscode" |  | ||||||
|         Write-Verbose "timer is $responseMS" |  | ||||||
| 
 |  | ||||||
|         $obj=New-Object PSObject -Property @{ |  | ||||||
|             DateTime=$start |  | ||||||
|             URL=$url |  | ||||||
|             Status=$status |  | ||||||
|             StatusCode=$statuscode |  | ||||||
|             ResponseMS=$ResponseMS |  | ||||||
|          } |  | ||||||
|          Write-Output $obj |  | ||||||
| 
 |  | ||||||
|       } #end Process |  | ||||||
|      End { |  | ||||||
|         Write-Verbose "End function" |  | ||||||
|      } |  | ||||||
| } |  | ||||||
| Function Wait-vShieldWebsite { |  | ||||||
|     do { |  | ||||||
|         $web = test-website https://$vShieldIP |  | ||||||
|         Sleep 5 |  | ||||||
|     } until ($Web.Status -eq "OK") |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| if ( (Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq $null ) |  | ||||||
| { |  | ||||||
| 	try { |  | ||||||
| 		Write-Host "Loading PowerCLI plugin, this will take a little while"  -foregroundcolor "cyan" |  | ||||||
| 		Add-PsSnapin VMware.VimAutomation.Core |  | ||||||
| 	} |  | ||||||
| 	catch { |  | ||||||
| 		Write-Host "Unable to load the PowerCLI plugin. Please verify installation and run this script again." |  | ||||||
| 		exit |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| $PCLIver = (((Get-PowerCLIVersion).Major * 10) + (Get-PowerCLIVersion).Minor) |  | ||||||
| If ($PCLIver -ge 51) {  |  | ||||||
| 	$null = Set-PowerCLIConfiguration -DisplayDeprecationWarnings:$false -InvalidCertificateAction Ignore -Confirm:$false -Scope "Session" |  | ||||||
| 	} Else { |  | ||||||
| 		Write-Host "Upgrade PowerCLI to version 5.1 or later" |  | ||||||
| 		Write-Host "This version cannot deploy thin provisioned vApps" |  | ||||||
| 		Read-Host "Press <Enter> to exit" |  | ||||||
| 		Exit |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| for ($i=1;$i -le 2; $i++){ |  | ||||||
|     $vmhost = "host$i.lab.local" |  | ||||||
|     $ping = new-object System.Net.NetworkInformation.Ping |  | ||||||
|     $Reply = $ping.send($vmhost) |  | ||||||
|     if ($Reply.status –ne "Success") { |  | ||||||
|         Write-Host $vmhost " not responding to ping, exiting"  -foregroundcolor "red" |  | ||||||
|         Write-Host "Re-run this script when both ESXi hosts are running"  -foregroundcolor "red" |  | ||||||
|         exit |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| $vShieldHostName = "vShield" |  | ||||||
| $vShieldFQDN = "vshield.lab.local" |  | ||||||
| $vShieldCluster = "Local" |  | ||||||
| $vShieldIP = "192.168.199.40" |  | ||||||
| $vShieldID = "24" |  | ||||||
| $vShieldGW = "192.168.199.2" |  | ||||||
| $vShieldPrimaryDNS = "192.168.199.4" |  | ||||||
| $vShieldSecondaryDNS = "192.168.199.4" |  | ||||||
| $vShieldUser = "admin" |  | ||||||
| $vShieldPass = "default" |  | ||||||
| $vCenter = "192.168.199.5" |  | ||||||
| $vcUsername = "Lab\vi-admin" |  | ||||||
| $vcPass = "VMware1!" |  | ||||||
| $Newproperty = New-VIProperty -Name ToolsStatus -ObjectType VirtualMachine -Value { |  | ||||||
| 	param($vm) |  | ||||||
| 	$vm.ExtensionData.Guest.ToolsStatus |  | ||||||
| } -Force |  | ||||||
| 
 |  | ||||||
| Write-Host "Connecting to vCenter" |  | ||||||
| try { |  | ||||||
| 	$Connect = Connect-VIServer -Server $vCenter -User $vcUsername -Password $vcPass -ErrorAction Stop |  | ||||||
| 	$VMhost = Get-Cluster $vShieldCluster | Get-VMHost | Select -First 1 |  | ||||||
| } |  | ||||||
| catch { |  | ||||||
| 	Write-Host "Unable to connect to to $vCenter. Exiting." |  | ||||||
| 	exit |  | ||||||
| } |  | ||||||
| # Work out which iSCSI datastore has the most free space |  | ||||||
| $vShieldDS = Get-Datastore -name iSCSI* | Select Name, FreeSpaceGB | Sort-Object -Property FreeSpaceGB | Select-Object -Last 1 |  | ||||||
| 
 |  | ||||||
| if (Test-Path "\\192.168.199.7\Build\vCD_51\VMware-vShield-Manager-5.1.*.ova") { |  | ||||||
| 	$vshieldOVA = (Get-ChildItem \\192.168.199.7\Build\vCD_51\VMware-vShield-Manager-5.1.*.ova).FullName |  | ||||||
| 	Write-Host "Importing the vShield OVA" |  | ||||||
| 	try {	 |  | ||||||
| 		$va = Import-VApp -Name $vShieldHostName -Datastore $vShieldDS.Name -VMHost $VMHost -Source $vshieldOVA -DiskStorageFormat Thin -ErrorAction Stop |  | ||||||
| 		$null = Get-VM $vShieldHostName | Set-VM -MemoryMB 512 -Confirm:$false |  | ||||||
| 		$null = Get-VMResourceConfiguration -VM $vShieldHostName | Set-VMResourceConfiguration -MemReservationMB 0 |  | ||||||
| 		Write-Host "Starting the vShield VM" |  | ||||||
| 		$Start = Start-VM $vShieldHostName -Confirm:$false |  | ||||||
| 		Wait-vShieldBoot |  | ||||||
| 		Write-Host "vShield Manager import complete." |  | ||||||
| 	} |  | ||||||
| 	catch { |  | ||||||
| 		write-host "Unable to import vShield. Exiting." |  | ||||||
| 		exit |  | ||||||
| 	} |  | ||||||
| } else { |  | ||||||
| 	Write-Host "vShield OVA not found. Please copy the file to the Build share and try again." |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ### Commented out due to issues with vShield VM authentication during Invoke-VMScript |  | ||||||
| # Write-Host "Waiting until the vShield VM has started" |  | ||||||
| # Wait-vShieldBoot |  | ||||||
| # Write-Host "Setting the initial IP address after boot" |  | ||||||
| # $Zebrafile = New-Zebrafile -vShieldHostName $vShieldFQDN -vShieldIP $vShieldIP -vShieldID $vShieldID -vShieldGW $vShieldGW |  | ||||||
| # $Password = ConvertTo-SecureString -AsPlainText $vShieldPass -Force |  | ||||||
| # $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "admin", $Password |  | ||||||
| 
 |  | ||||||
| # $invoke = Invoke-VMScript -VM vShield -ScriptText "mv /common/configs/cli/zebra.conf /common/configs/cli/zebra.conf.bak" -ScriptType Bash -GuestCredential $cred |  | ||||||
| # $ReIP = Copy-VMGuestFile -VM $vShieldHostName -Source $ENV:TEMP\zebra.conf -Destination "/common/configs/cli/" -LocalToGuest -GuestUser $vShieldUser -GuestPassword $vShieldPass |  | ||||||
| 
 |  | ||||||
| # Write-Host "Powering Off the vShield VM" |  | ||||||
| # Sleep 5 |  | ||||||
| # $Stop = Stop-VM $vShieldHostName -Confirm:$false |  | ||||||
| # Write-Host "Starting the vShield VM" |  | ||||||
| # $Start = Start-VM $vShieldHostName -Confirm:$false |  | ||||||
| 
 |  | ||||||
| # Write-Host "Waiting until the vShield VM has started" |  | ||||||
| # Wait-vShieldBoot |  | ||||||
| 
 |  | ||||||
| # Write-Host "Waiting until the vShield Management site has started" |  | ||||||
| # Wait-vShieldWebsite |  | ||||||
| 
 |  | ||||||
| # Write-Host "Linking vShield to vCenter and set DNS entries" |  | ||||||
| # $SetIP = Set-vShieldConfiguration -vCenter $vCenter -Username $vcUsername -Password $vcPass -PrimaryDNS $vShieldPrimaryDNS -SecondaryDNS $vShieldSecondaryDNS |  | ||||||
| # Write-Host "Configuration Complete" |  | ||||||
| if (Test-Path "C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe") { |  | ||||||
| 	Read-Host " Configuration complete, press <Enter> to continue." |  | ||||||
| } |  | ||||||
| exit |  | ||||||
		Loading…
	
		Reference in New Issue