vSphereAutoLab/Build/Automate/ShutLab.ps1

102 lines
4.7 KiB
PowerShell
Raw Normal View History

# Script to Shutdown AutoLab
#
#
# Version 2.6
#
#
. "C:\PSFunctions.ps1"
Function ShutWinServ ($WinServ){
$ping = new-object System.Net.NetworkInformation.Ping
$Reply = $ping.send($WinServ)
if ($Reply.status <EFBFBD>eq "Success") {
Write-Host "Shutdown $WinServ" -foregroundcolor "Green"
$null = stop-Computer -comp $WinServ -force
}
}
if (Test-Path \\nas\build\Automate\automate.ini) {
$AdminPWD = "VMware1!"
$AdminPWD = ((Select-String -SimpleMatch "Adminpwd=" -Path "\\nas\build\Automate\automate.ini").line).substring(9)
} Else {
Write-BuildLog "Cannot find Automate.ini, this isn't a good sign"
}
Write-Host " "
Write-Host "This script will shutdown your lab, enter Y to proceed" -foregroundcolor "cyan"
$ReBuild = Read-Host
If ([string]::Compare($ReBuild, "Y", $True) -eq "0"){
Write-Host "Shutting down your lab" -foregroundcolor "cyan"
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
}
}
Write-host "Connect to Linux machines to cache RSA Keys, say yes to all"
$ping = new-object System.Net.NetworkInformation.Ping
$Reply = $ping.send("192.168.199.254")
if ($Reply.status <EFBFBD>eq "Success") {
Write-Host " WAN" -foregroundcolor "Green"
cmd /c '"C:\Program Files (x86)\PuTTY\plink.exe" 192.168.199.254 -l root -pw VMware1! exit'
}
$Reply = $ping.send("gw")
if (($Reply.status <EFBFBD>eq "Success") -and (!((get-vmplatform) -ne "Ravello"))) {
Write-Host " Router" -foregroundcolor "Green"
cmd /c '"C:\Program Files (x86)\PuTTY\plink.exe" gw -l root -pw VMware1! exit'
}
$Reply = $ping.send("nas")
if ($Reply.status <EFBFBD>eq "Success") {
Write-Host " NAS" -foregroundcolor "Green"
cmd /c '"C:\Program Files (x86)\PuTTY\plink.exe" NAS -l root -pw VMware1! exit'
}
Write-Host "Connect to vCenter" -foregroundcolor "Green"
$null = connect-viserver vc.lab.local -user administrator -password $AdminPWD
Write-Host "Shutdown any running VMs" -foregroundcolor "Green"
$Cluster = Get-Cluster -name "Local"
$null = get-VM -Location $Cluster | Where-Object {$_.PowerState -eq "PoweredOn"}| foreach-Object{Write-Host "Shutting down " $_.Name -foregroundcolor "Green";stop-vm $_ -Confirm:$false}
Write-Host "Shutdown any running ESX servers" -foregroundcolor "Green"
$null = get-VMhost -Location $Cluster | Where-Object {$_.ConnectionState -eq "Connected"}| foreach-Object{Write-Host "Shutting down " $_.Name -foregroundcolor "Green"; stop-vmhost $_ -Confirm:$false -force}
$null = Disconnect-VIServer -Server * -confirm:$false
ShutWinServ ("ss.lab.local")
ShutWinServ ("cs1.lab.local")
ShutWinServ ("cs2.lab.local")
ShutWinServ ("v1.lab.local")
ShutWinServ ("vbr.lab.local")
$Reply = $ping.send("vc2.lab.local")
if ($Reply.status <EFBFBD>eq "Success") {
Write-Host "Shutdown SRM Site" -foregroundcolor "Green"
Write-Host "Connect to vCenter" -foregroundcolor "Green"
$null = connect-viserver vc2.lab.local -user administrator -password $AdminPWD
Write-Host "Shutdown any running VMs" -foregroundcolor "Green"
$null = get-VM | Where-Object {$_.PowerState -eq "PoweredOn"}| foreach-Object{Write-Host "Shutting down " $_.Name -foregroundcolor "Green";stop-vm $_ -Confirm:$false}
Write-Host "Shutdown any running ESX servers" -foregroundcolor "Green"
$null = get-VMhost | Where-Object {$_.ConnectionState -eq "Connected"}| foreach-Object{Write-Host "Shutting down " $_.Name -foregroundcolor "Green"; stop-vmhost $_ -Confirm:$false -force}
$null = Disconnect-VIServer -Server * -confirm:$false
}
$Reply = $ping.send("192.168.199.254")
if ($Reply.status <EFBFBD>eq "Success") {
Write-Host "Shutdown WAN" -foregroundcolor "Green"
cmd /c '"C:\Program Files (x86)\PuTTY\plink.exe" 192.168.199.254 -l root -pw VMware1! shutdown -h now'
}
$Reply = $ping.send("gw")
if (($Reply.status <EFBFBD>eq "Success") -and (!((get-vmplatform) -ne "Ravello"))) {
Write-Host "Shutdown Router" -foregroundcolor "Green"
cmd /c '"C:\Program Files (x86)\PuTTY\plink.exe" gw -l root -pw VMware1! halt -p'
}
$Reply = $ping.send("nas")
if ($Reply.status <EFBFBD>eq "Success") {
Write-Host "Shutdown NAS" -foregroundcolor "Green"
cmd /c '"C:\Program Files (x86)\PuTTY\plink.exe" NAS -l root -pw VMware1! shutdown -h now'
}
ShutWinServ ("dc2.lab.local")
ShutWinServ ("dc.lab.local")
ShutWinServ ("vc2.lab.local")
ShutWinServ ("vc.lab.local")
Read-Host "Exit and wait for everything to go away" -foregroundcolor "cyan"
} Else {
Write-Host "Leaving your lab running" -foregroundcolor "cyan"
}