# 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 –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 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") $ping = new-object System.Net.NetworkInformation.Ping $Reply = $ping.send("vc2.lab.local") if ($Reply.status –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 –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 –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 –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' } $Reply = $ping.send("vcd") if ($Reply.status –eq "Success") { Write-Host "Shutdown vCloud" -foregroundcolor "Green" cmd /c '"C:\Program Files (x86)\PuTTY\plink.exe" vcd -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" }