Public/Shutdown-ESXI.ps1
function Shutdown-ESXI { [CmdletBinding(DefaultParameterSetName='Shutdown')] param( [Parameter(Mandatory)] [string]$VMHost, [Parameter(ParameterSetName='Restart')] [switch]$Restart ) Write-Verbose -Message "Shutting Down VM's" Get-VM -Server $VMHost | Where-Object {$_.PowerState -eq "PoweredOn"} | Stop-VM -Confirm -Verbose Write-Verbose -Message "Setting Connection State - Maintenance" Set-VMHost -VMHost $VMHost -State Maintenance -Verbose switch ($psCmdlet.ParameterSetName ) { default { Write-Verbose -Message "Shutting Down ESXi Host" Stop-VMHost -VMHost $VMHost -Verbose } 'Shutdown' { Write-Verbose -Message "Shutting Down ESXi Host" Stop-VMHost -VMHost $VMHost -Verbose } 'Restart' { Write-Verbose -Message "Restarting ESXi Host" Restart-VMHost -VMHost $VMHost -Verbose Start-Sleep -Seconds 60 Write-Verbose -Message "Attempting to Reconnect" while (-not( Connect-VIServer -Server $VMHost )) { Start-Sleep -Seconds 45 } Write-Verbose -Message "Setting Connection State - Connected" Set-VMHost -VMHost $VMHost -State Connected -Verbose } } } |