Set-HostStartPolicy
VMware: Modifies the host default start policy
#Requires -Version 5.1
#Requires -Modules VMware.VimAutomation.Core
[CmdletBinding(DefaultParameterSetName = "byName")]
Param(
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[string]$VIServer,
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[pscredential]$VICredential,
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[string]$HostId,
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[string]$HostName,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[bool]$Enabled,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[int32]$StartDelay,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[ValidateSet("None", "Suspend", "PowerOff", "GuestShutdown")]
[string]$StopAction,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[int32]$StopDelay,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[bool]$WaitForHeartBeat
)
Process {
$vmServer = $null
try {
$vmServer = Connect-VIServer -Server $VIServer -Credential $VICredential -ErrorAction Stop
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
if ($PSCmdlet.ParameterSetName -eq "byID") {
$vmhost = Get-VMHost -Server $vmServer -Id $HostId -ErrorAction Stop
}
else {
$vmhost = Get-VMHost -Server $vmServer -Name $HostName -ErrorAction Stop
}
$poli = Get-VMHostStartPolicy -Server $vmServer -VMHost $vmhost -ErrorAction Stop
$cmdArgs = @{ ErrorAction = 'Stop'; VMHostStartPolicy = $poli; Confirm = $false }
if ($PSBoundParameters.ContainsKey('Enabled')) { Set-VMHostStartPolicy @cmdArgs -Enabled $Enabled }
if ($StartDelay -gt 0) { Set-VMHostStartPolicy @cmdArgs -StartDelay $StartDelay }
if ($StopDelay -gt 0) { Set-VMHostStartPolicy @cmdArgs -StopDelay $StopDelay }
if ($PSBoundParameters.ContainsKey('StopAction')) { Set-VMHostStartPolicy @cmdArgs -StopAction $StopAction }
if ($PSBoundParameters.ContainsKey('WaitForHeartBeat')) { Set-VMHostStartPolicy @cmdArgs -WaitForHeartBeat $WaitForHeartBeat }
$result = Get-VMHostStartPolicy -Server $vmServer -VMHost $vmhost -ErrorAction Stop | Select-Object *
foreach ($item in $result) {
$item | Add-Member -NotePropertyName 'Timestamp' -NotePropertyValue $timestamp -Force
Write-Output $item
}
}
catch { throw }
finally { if ($null -ne $vmServer) { Disconnect-VIServer -Server $vmServer -Force -Confirm:$false -ErrorAction SilentlyContinue } }
}IP address or DNS name of the vSphere server
PSCredential object for authenticating with the server
ID of the host to modify
Name of the host to modify
Enable the service that controls host start policies
Default start delay in seconds
Default action when the server stops
Default stop delay in seconds
VMs should start after receiving a heartbeat