Popular Posts

Thursday, August 13, 2020

Shutdown and Startup VMs using PowerCLI

Shutdown

param (
[Parameter(Mandatory=$true)]
$serverslistfile
)
function writetolog([string] $txt) {
$Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
Add-content $logfile -value $Stamp':'$txt
}
$vCenter = 'vcentername'
$logfile = 'C:\Windows\Temp\DR_ShutdownVMs.log'
$serverslist = Get-Content $serverslistfile
Write-host "############################## ABC company DR activity - Shutdown VMs ##############################"
writetolog("############################## ABC company DR activity - Shutdown VMs ##############################")
Write-Host "vCenter server selected : "$vCenter
writetolog("vCenter server selected : " + $vCenter)
Write-Host "Servers list selected : "
writetolog("Servers list selected : ")
$serverslist | ForEach-Object { Write-Host $_ ; writetolog($_) }
$Confirm = Read-Host "Please type 'ok' to confirm selection is correct"
if($Confirm -eq 'ok') {
writetolog("Proceed: OK by $env:UserName")
try{
Connect-VIServer $vCenter
Write-Host "Successfully connected to $vCenter vCenter"
writetolog("Successfully connected to $vCenter vCenter")
} catch {
Write-Host "Cannot connect to $vCenter vCenter, Exiting Program"
writetolog("Cannot connect to $vCenter vCenter, Exiting Program")
exit -1
}
$serverslist | foreach-object {
if((Get-VM $_ | select -ExpandProperty PowerState) -eq "PoweredOn") {
try {
shutdown-vmguest $_ -Confirm:$false | Out-Null
Write-Host $_ "Shutdown-ed"
writetolog($_ + " Shutdown-ed")
} catch{
Write-host $_ "Error"
writetolog($_ + " Error Shutting down")
}
} else {
Write-host $_ "Already Powered Down"
writetolog($_ + " Already Powered Down")
}
}
Disconnect-VIServer $vCenter -Confirm:$false
Write-Host "Successfully disconnected from $vCenter vCenter"
writetolog("Successfully disconnected from $vCenter vCenter")
} else {
exit
}




Startup


param (
[Parameter(Mandatory=$true)]
$serverslistfile
)
function writetolog([string] $txt) {
$Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
Add-content $logfile -value $Stamp':'$txt
}
$vCenter = 'vcentername'
$logfile = 'C:\Windows\Temp\DR_PowerOnVMs.log'
$serverslist = Get-Content $serverslistfile
Write-host "############################## ABC company R activity - Power On VMs ##############################"
writetolog("############################## ABC company DR activity - Power On VMs ##############################")
Write-Host "vCenter server selected : "$vCenter
writetolog("vCenter server selected : " + $vCenter)
Write-Host "Servers list selected : "
writetolog("Servers list selected : ")
$serverslist | ForEach-Object { Write-Host $_ ; writetolog($_) }
$Confirm = Read-Host "Please type 'ok' to confirm selection is correct"
if($Confirm -eq 'ok') {
writetolog("Proceed: OK by $env:UserName")
try{
Connect-VIServer $vCenter
Write-Host "Successfully connected to $vCenter vCenter"
writetolog("Successfully connected to $vCenter vCenter")
} catch {
Write-Host "Cannot connect to $vCenter vCenter, Exiting Program"
writetolog("Cannot connect to $vCenter vCenter, Exiting Program")
exit -1
}
$serverslist | foreach-object {
if((Get-VM $_ | select -ExpandProperty PowerState) -eq "PoweredOff") {
try {
Start-VM $_ -Confirm:$false | out-null
Write-Host $_ "Powered On"
writetolog($_ + " Powered On")
} catch{
Write-host $_ "Error"
writetolog($_ + " Error Powering On")
}
} else {
Write-host $_ "Already Powered On"
writetolog($_ + " Already Powered On")
}
}
Disconnect-VIServer $vCenter -Confirm:$false
Write-Host "Successfully disconnected from $vCenter vCenter"
writetolog("Successfully disconnected from $vCenter vCenter")
} else {
exit
}

No comments:

Post a Comment